[英]Ember controller set property in action
余燼的新手,這是超級愚蠢,但我已經浪費了我的時間。
我正在控制器中創建對象數組,用於在視圖中構建單選按鈕。
當單擊按鈕時,我想在單選輸入上切換clicked屬性,以使其顯示為被單擊。 很簡單,但Ember不斷向我拋出錯誤。
這是我的代碼(編輯了一些錯字):
IndexController = Ember.ObjectController.extend({
radioArray : function () {
var a = [], i = 0;
while (a.push({ index: i++, clicked: false }), i <= 10);
return a;
}.property('radioArray'),
actions : {
assignClick : function (item, index) {
this.toggleProperty(item.clicked);
// some unrelated business logic here
}
}
});
這掛鈎:
{{#each radioArray}}
<label {{action "assignClick" this index}}>
<input type="radio" {{bind-attr value=index checked=clicked}} /> foo
</label>
{{/each}}
我只想顯示已單擊正確的單選按鈕。 但是,當我嘗試將ctrl中的clicked設置為true時,會收到“未捕獲的錯誤:斷言失敗:無法使用錯誤的密鑰調用get”。
如果您嘗試使用Em.Object.toggleProperty
,則需要Em.Object
。 :)有諸如Em.get
和Em.set
類的函數,可用於余燼和非ember對象,但對於非ember對象則沒有Em.toggleProperty
函數。
但是,可以將Em.set與Em.get一起使用以實現切換行為:
Em.set(item, 'clicked', !Em.get(item, 'clicked'));
PS從屬性本身設置屬性依賴沒有意義。 (我說的是radioArray : function () {...}.property('radioArray')
)。
PPS工作示例: http : //emberjs.jsbin.com/memuwi/2/edit?html,js,output
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.