流星 - 什么是Spacebars.kw {hash:Object}

时间:2015-01-03 14:28:55

标签: meteor spacebars

我试图编写一个可以放在模板中的Meteor包。所以我首先尝试注册一个帮手。

Template.registerHelper('testHelper', function(a, b) {
        console.log(a);
        console.log(b);
})

我已在/packages内添加了该软件包,在我的客户端模板中,当我添加{{testHelper "hello" "meow"}}时,控制台已记录hellomeow,这是我的期望。

当我添加{{testHelper "hello"}}时,我希望控制台记录hellonull,因为没有传递任何内容作为第二个参数。但它返回了hello和一个对象 - Spacebars.kw {hash: Object}

这是Spacebars.kw {hash: Object}是什么?如果我希望它返回null,我该怎么办?

1 个答案:

答案 0 :(得分:14)

Spacebars.kw包含一个hash对象,该对象具有输入参数的哈希值。

Meteor有两种匹配方法的方法,一种是直接匹配,即参数直接输入的地方,例如{{testHelper "variable1" "variable2" "variable3"}},匹配为function(a,b,c),因为变量1-3匹配到a ,b和c分别。

第二种输入方法是使用哈希

{{testHelper a="variable1" b="variable2" c="variable3"}}

这会为function(a)提供一个参数,其中a是Spacebars.kw个对象。

Spacebars.kw对象将有一个名为hash的子对象,其结构匹配:

{ "a" : "variable1",
  "b" : "variable2",
  "c" : "variable3" }

Meteor将尝试直接匹配第一个参数,但后续参数将匹配为哈希值,因为第二个输入为空,例如在{{testHelper 'hello'}}使用b的情况下为null,所以它是作为哈希给出的。

通常这样给出,所以如果你把b作为Spacebars.kw对象,你可以假设没有第二个输入。另一种方法是您可以使用哈希样式声明,然后直接检查哈希值是否为null

{{testHelper text="Hello"}}
{{testHelper text="Hello" othertext="Hellooo"}}

和帮手:

Template.registerHelper('testHelper', function(kw) {
    console.log(kw.hash.text);
    console.log(kw.hash.othertext);
});