将对象字面量传递给 handlebars partial
Pass object literal to handlebars partial
是否可以在车把模板中执行类似以下操作?
{{> myPartial {name: 'steve', age: '40'} }}
这会在 {
上引发解析错误。我可以传递上下文或命名参数。
docs:
It's possible to execute partials on a custom context by passing in the context to the partial call.
{{> myPartial myOtherContext }}
我正在使用 webpack with handlebars-loader 来呈现我的模板,我真的没有任何地方可以传递上下文。我只是想在多个模板中使用这个部分并指定当时的数据。
与此回复相关:https://github.com/wycats/handlebars.js/issues/476您不能在 Handlebars 模板上分配新变量,您必须在模板数据上创建此对象 {name: 'steve', age: '40'}
。
data.user = {name: 'steve', age: '40'}
关于 .hbs
{{> myPartial user}}
不过你可以看看 private variables
: http://handlebarsjs.com/block_helpers.html
---- 2017 年 8 月更新----
使用新的 let 块辅助指令,您可以创建 HTML 变量来更轻松地操作您的显示逻辑:
全局 JS
// Create a new Global helper, available everywhere
Template.registerHelper('getUser', function () {
return Meteor.user()
})
火焰 HTML
使用您的全局助手将用户检索到变量中并将其用于 HTML
{{#let user=getUser}}
{{#if user}}
Hi {{user.name}}
{{else}}
Please Login
{{/if}}
{{/let}}
---- 2019 年更新----
让我们重新打开那个问题并将其提升到一个新的水平。
通过注册新的简单助手,您将能够直接从 Blaze 创建对象或数组(所以您想要的一切):
Template.registerHelper('object', function({hash}) {
return hash;
})
Template.registerHelper('array', function() {
return Array.from(arguments).slice(0, arguments.length-1)
})
用法:
{{> myPartial (object name="steve" age=40 array_example=(array true 2 "3"))}}
将作为上下文发送:
{
name: 'steve',
age: 40,
array_example: [true, 2, "3"]
}
注册一个助手(即上下文)来解析您要传递的上下文:
方法如下:https://jsfiddle.net/dregep/o4p1g8nL/11/
Handlebars.registerHelper('context', function (jsString) {
return eval("context=" + jsString);
});
然后这样称呼它:
{{> myPartial (context 'js object') }}
示例:
{{> myPartial (context '{a: 1}') }}
这相当于:
{{> myPartial a=1 }}
是否可以在车把模板中执行类似以下操作?
{{> myPartial {name: 'steve', age: '40'} }}
这会在 {
上引发解析错误。我可以传递上下文或命名参数。
docs:
It's possible to execute partials on a custom context by passing in the context to the partial call.
{{> myPartial myOtherContext }}
我正在使用 webpack with handlebars-loader 来呈现我的模板,我真的没有任何地方可以传递上下文。我只是想在多个模板中使用这个部分并指定当时的数据。
与此回复相关:https://github.com/wycats/handlebars.js/issues/476您不能在 Handlebars 模板上分配新变量,您必须在模板数据上创建此对象 {name: 'steve', age: '40'}
。
data.user = {name: 'steve', age: '40'}
关于 .hbs
{{> myPartial user}}
不过你可以看看 private variables
: http://handlebarsjs.com/block_helpers.html
---- 2017 年 8 月更新----
使用新的 let 块辅助指令,您可以创建 HTML 变量来更轻松地操作您的显示逻辑:
全局 JS
// Create a new Global helper, available everywhere
Template.registerHelper('getUser', function () {
return Meteor.user()
})
火焰 HTML
使用您的全局助手将用户检索到变量中并将其用于 HTML
{{#let user=getUser}}
{{#if user}}
Hi {{user.name}}
{{else}}
Please Login
{{/if}}
{{/let}}
---- 2019 年更新----
让我们重新打开那个问题并将其提升到一个新的水平。
通过注册新的简单助手,您将能够直接从 Blaze 创建对象或数组(所以您想要的一切):
Template.registerHelper('object', function({hash}) {
return hash;
})
Template.registerHelper('array', function() {
return Array.from(arguments).slice(0, arguments.length-1)
})
用法:
{{> myPartial (object name="steve" age=40 array_example=(array true 2 "3"))}}
将作为上下文发送:
{
name: 'steve',
age: 40,
array_example: [true, 2, "3"]
}
注册一个助手(即上下文)来解析您要传递的上下文:
方法如下:https://jsfiddle.net/dregep/o4p1g8nL/11/
Handlebars.registerHelper('context', function (jsString) {
return eval("context=" + jsString);
});
然后这样称呼它:
{{> myPartial (context 'js object') }}
示例:
{{> myPartial (context '{a: 1}') }}
这相当于:
{{> myPartial a=1 }}