将参数传递给模板助手

时间:2014-11-30 23:13:58

标签: meteor

在Discover Meteor中,我们将参数(titleurl)传递给模板助手,如下所示:

<div class="form-group {{errorClass 'title'}}">
...
...
<div class="form-group {{errorClass 'url'}}">

然后我们定义了解传递参数的助手,如下所示:

errorClass: function (field) {
  return !!Session.get('postSubmitErrors')[field] ? 'has-error' : '';
}

Session.get('key')[parameter]语法让我感到困惑 - 为什么参数不是用键传递的,而是在函数外面,用括号括起来?我没有在文档中看到这种语法的示例。感谢。

1 个答案:

答案 0 :(得分:1)

因此,在JavaScript中,我们可以像这样访问对象的属性:

foo.bar

这意味着:

  1. 获取变量foo
  2. 中的对象
  3. 提取名为bar的属性。
  4. 存在替代语法:

    foo["bar"]
    

    这意味着 1 完全相同。

    为什么我们需要这种替代语法?好吧,它允许我们做这样的酷事:

    var foo = { bar: "Nero", baz: "Caligula"}
    var field = "bar";
    foo[field]; // Evaluates to "Nero"
    field = "baz";
    foo[field]; // Evaluates to "Caligula"
    

    (它是如何索引数组的工作原理)。

    这可以很容易地扩展到:

    function accessFoo(field) {
        return foo[field]; // with foo from previous example.
    }
    accessFoo("bar"); // evaluates to "Nero"
    accessFoo("baz"); // evaluates to "Caligula"
    

    我希望您能看到代码示例和我上一个示例的相似性。

    1:出于实际目的 - 可能存在一些细微差别。如果是这样,我很乐意在评论中听到它们。