有没有办法从外面覆盖流星js助手

时间:2015-01-18 15:09:39

标签: meteor meteor-blaze

我有一个模板grid_list

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

grid_list helpers:

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

我从其他模板中调用grid_list

{{&GT; grid_list}}

我可以以某种方式将其他变量传递给grid_list来覆盖项目帮助结果吗?

1 个答案:

答案 0 :(得分:0)

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

<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帮助器中,您可以检查数据上下文是否包含该数组,并返回适当的值。例如:

<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]
        }

    }
})