争论在EmberJS传递

时间:2014-10-20 01:13:01

标签: ember.js

我是这个EmberJS环境的新手,我想问一下,你如何向控制器功能发送参数?我只想过滤我得到的模型。但我不知道如何将参数传递给控制器​​。谁能告诉我怎么样?任何意见/建议将不胜感激

Html文件:

<script type="text/x-handlebars" data-template-name="favorite/items">
    <ul>
    {{#each i in "filteredItems" }}
        <li>{{i.name}}</li>
    {{/each}}
    </ul>
</script>

JS档案:

App.FavoriteItemsController = Ember.ArrayController.extend({
   filteredItems: function (id) {
    return this.get('model').filterProperty('favoriteId',id);
   }.property('model.@each.favoriteId')
});

1 个答案:

答案 0 :(得分:1)

Handlebars是无逻辑的,您不会将属性传递给计算属性。诀窍是使计算属性依赖于另一个可以改变计算属性的属性。

<script type="text/x-handlebars" data-template-name="favorite/items">
    <ul>
    {{#each i in filteredItems }}
        <li>{{i.name}}</li>
    {{/each}}
    </ul>
</script>

JS档案:

App.FavoriteItemsController = Ember.ArrayController.extend({
   filteredParam: 1,
   filteredItems: function () {
    var filteredParam = this.get('filteredParam');
    return this.get('model').filterBy('favoriteId',filteredParam);
   }.property('@each.favoriteId', 'filteredParam')
});

当你更改filteredParam时,ember会将filteredItems视为脏,并重新计算它。

示例:http://emberjs.jsbin.com/meruli/edit?html,js,output