Javascript 将对象文字传递到把手部分
在车把模板中是否可以执行以下操作Javascript 将对象文字传递到把手部分,javascript,handlebars.js,webpack,Javascript,Handlebars.js,Webpack,在车把模板中是否可以执行以下操作 {{> myPartial {name: 'steve', age: '40'} }} 这会在{上引发解析错误。我可以传递上下文或命名参数 : 通过将上下文传递给分部调用,可以在自定义上下文上执行分部。 {{>mymyothercontext} 我正在使用with呈现我的模板,在上下文中我没有任何地方可以传递。我只想在多个模板中使用此部分,并指定当时的数据。与此回复相关:您无法在把手模板上分配新变量,您必须创建此对象{name:'steve',age:'
{{> myPartial {name: 'steve', age: '40'} }}
这会在{
上引发解析错误。我可以传递上下文或命名参数
:
通过将上下文传递给分部调用,可以在自定义上下文上执行分部。
{{>mymyothercontext}
我正在使用with呈现我的模板,在上下文中我没有任何地方可以传递。我只想在多个模板中使用此部分,并指定当时的数据。与此回复相关:您无法在把手模板上分配新变量,您必须创建此对象{name:'steve',age:'40'}
在模板数据上
data.user = {name: 'steve', age: '40'}
哈佛商学院
{{> myPartial user}}
但是您可以查看私有变量
:
----2017年8月更新---
使用新的block helper指令,您可以创建HTML变量以更轻松地操作显示逻辑:
全球JS
// Create a new Global helper, available everywhere
Template.registerHelper('getUser', function () {
return Meteor.user()
})
Blaze HTML
使用全局帮助器将用户检索到变量中,并将其用于HTML
{{#let user=getUser}}
{{#if user}}
Hi {{user.name}}
{{else}}
Please Login
{{/if}}
{{/let}}
----2019年更新---
让我们重新讨论这个问题,把它放到下一个层次
通过注册新的简单助手,您将能够直接从Blaze创建对象或数组(因此,您可以随意创建):
用法:
{{> myPartial (object name="steve" age=40 array_example=(array true 2 "3"))}}
将作为上下文发送:
{
name: 'steve',
age: 40,
array_example: [true, 2, "3"]
}
注册一个帮助程序(即上下文)以解析要传递的上下文:
以下是如何:
那么就这样称呼它:
{{> myPartial (context 'js object') }}
例如:
{{> myPartial (context '{a: 1}') }}
这相当于:
{{> myPartial a=1 }}
A增加了一个最近的更新,以防我在这里更新我的答案时看到了你的答案,你应该看看我的两个新助手(
object
和array
),它们可能会让你感兴趣。在2019年的更新中,Eval做得太过分了,为什么你要在从参数创建数组后对数组进行切片?它不是复制了两次数组吗?结果是Handlebar发送了一个额外的参数,所以你要删除它。尽管我认为从性能角度来看,最好将它保存在一个变量中并删除最后一个e不要再复制所有元素,除了最后一个。谢谢你的回答帮了大忙!
{{> myPartial (context '{a: 1}') }}
{{> myPartial a=1 }}