首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流星-什么是Spacebars.kw {散列:对象}

流星-什么是Spacebars.kw {散列:对象}
EN

Stack Overflow用户
提问于 2015-01-03 14:28:55
回答 1查看 1.5K关注 0票数 6

我正在尝试编写一个Meteor包,它可以放在模板中。所以我第一次尝试注册一个帮手。

代码语言:javascript
复制
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,我能做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-03 15:34:54

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

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

第二种输入方法是使用散列:

代码语言:javascript
复制
{{testHelper a="variable1" b="variable2" c="variable3"}}

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

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

代码语言:javascript
复制
{ "a" : "variable1",
  "b" : "variable2",
  "c" : "variable3" }

Meteor将尝试直接匹配第一个参数,但在第二个输入为空的情况下,随后的参数将被匹配为散列,例如在使用{{testHelper 'hello'}}时,b将为null,因此将其作为哈希。

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

代码语言:javascript
复制
{{testHelper text="Hello"}}
{{testHelper text="Hello" othertext="Hellooo"}}

帮手:

代码语言:javascript
复制
Template.registerHelper('testHelper', function(kw) {
    console.log(kw.hash.text);
    console.log(kw.hash.othertext);
});
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27755891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档