簡體   English   中英

Ember控制器將屬性設置為有效

[英]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.getEm.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM