2014-10-20 59 views
1

我對這個EmberJS環境很陌生,我想問一問,你如何向控制器函數發送參數?我只想過濾我得到的模型。但我不知道如何將參數傳遞給控制器​​。有人能告訴我如何?任何意見/建議將不勝感激在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('[email protected]') 
}); 
+0

嘗試此操作後得到了什麼? – 2014-10-20 01:25:16

+0

一無所獲,控制檯說這是一個錯誤,但如果我使用filterProperty('favoriteId',1)。 。我收到了具有此類屬性的模型的結果 – 2014-10-20 01:49:01

回答

1

把手是邏輯少,你不傳性質爲計算性能。訣竅是使計算屬性依賴於另一個可以改變你的計算屬性的屬性。

<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燼會考慮filteredItems爲髒,重新計算它。

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

+0

我明白了,我明白了這一點,謝謝!嗯,介意如果我也問這個,我是否正確地假設我需要this.set for filteredParam來改變它的值?抱歉,我腦海中仍然有太多問題需要回答。 – 2014-10-20 01:52:11

+0

是的,爲了讓Ember知道值已經改變了,你需要使用'Ember.set(obj,'prop',value)'或者如果obj擴展了'Ember.Object',那麼你可以執行'obj .set('prop',value)' – Kingpin2k 2014-10-20 02:03:17

+0

現在確實有很大的幫助。謝謝! – 2014-10-20 05:21:57