为什么会这样:Meteor-Blaze #with和数据上下文?

时间:2015-04-14 16:46:14

标签: meteor meteor-blaze

我想知道为什么以下内容输出'你好'而不是' bye' ???

模板:

<template name="example">
    {{#with dataContext}}
        {{say}}
    {{/with}}
</template>

模板助手:

Template.example.helpers({
    dataContext: function() {
        return {
            say: 'bye'
        };
    },
    say: function() {
        return 'hello';
    }
});

(流星1.1.0.2)

1 个答案:

答案 0 :(得分:2)

最简单的答案是助手对数据上下文有偏好。

如果您将其中一个重命名为其他内容,则应解决您的问题。

查找的顺序是:

  1. 数据上下文(如果它包含.)。 {{say}}没有。
  2. 模板的助手。 {{say}}say的帮助。
  3. 模板
  4. 全局帮助程序,例如使用Template.registerHelper定义的帮助程序。
  5. 数据上下文
  6. 因此,如果找不到第一个,它会在列表中找到

    [1] https://github.com/meteor/meteor/blob/90b356061ff2464f11749dc8b43d1a139b233980/packages/blaze/lookup.js#L100-L139