有没有办法从外部覆盖 meteor js helper

Is there a way to override meteor js helper from outside

我有模板grid_list

<template name="grid_list">
        {{#each items}}
            bla
        {{/each}}
</template>

grid_list 帮手:

Template.grid_list.helpers({
  items: function() {
    return [1, 2, 3];
  }
});

我从其他模板调用grid_list

{{> grid_list}}

我能否以某种方式将其他变量传递给 grid_list 以覆盖项目助手结果?

数据上下文优先于助手,因此您可以使用它来实现您想要的。

<template name="test">
    {{> grid_list myDataContext}}
</template>

<template name="grid_list">
    {{#each items}}
        bla
    {{/each}}
</template>
Template.test.helpers({
    myDataContext: function () {
        return {
            items: [2, 5, 4, 6]
        }
    }
})

items 帮助器中,您可以检查数据上下文是否包含数组,以及return 适当的值。例如:

<template name="test">
    {{> grid_list myDataContext}}
</template>

<template name="grid_list">
    {{#each items}}
        <p>{{this}}</p>
    {{/each}}
</template>
Template.test.helpers({
    myDataContext: function () {
        return {
            items: [2, 5, 4, 6]
        }
    }
})

Template.grid_list.helpers({
    items: function() {

        data = Template.instance().data

        if(data.hasOwnProperty('items')){
            return data.items
        }else{
            return [1, 2, 3]
        }

    }
})