2012-09-18 89 views
2

我設置了一個對象列表,將它們添加到content []數組列表中。到目前爲止很好。 App.list中的Ember DOM顯示正確的數據。現在,當我開始更改內容屬性而不刪除/ add/replaceAt()App.list中的任何對象時,似乎Ember不會選擇它。更改內容[]對象屬性而不刪除或添加

檢視: {{item.title}} {{/每}}

代碼 {在App.list.content} {#each項}: 函數對myApp(){ 應用= Ember.Application.create({});

App.Item = Ember.Object.extend({ 
    title: null, 
    parent: null 
    }); 

    App.MyList = Ember.Object.extend({ 
    title: null, 
    content: [], 
    changed: function() { 
     console.log('here'); 
    }.observes('content') 
    }); 

    App.list = App.MyList.create({ 
    title: "foobar", 
    content: [ 
     App.Item.create({ 
     title: "item1" 
     }), 
     App.Item.create({ 
     title: "item2" 
     }) 
    ] 
    }); 
    console.log(App.list.content); 

    // Add 3rd object to list 
    App.list.get('content').pushObject(
    App.Item.create({ 
     title: "item3" 
    }) 
); 
} 

..和後來在一些隨機灰燼ArrayController我這樣做: 爲(VAR I = 0;我< 2;我++){ App.list.content [I] .title僞=「我CHANGED您」; }

看着我的App.list的內容是正確的,但觀點不是。我錯過了什麼嗎?如果我不得不猜測ArrayHasChanged()似乎被修改爲數組大小發生變化或對象正在被更改,我沒有這樣做,我正在修改content []數組的特定對象中的屬性數據。是否有可能或我必須removeAt()/添加/刪除對象?

回答

1

您需要使用get和set,以便觀察者/綁定觸發您的更改。

// Bad 
App.list.content[i].title = "blah"; 

// Good 
App.get('list').objectAt(i).set('title', 'blah'); 

如果這仍然不適合你,可能還有其他東西丟失。如果你可以發佈一個jsfiddle,這將幫助很多!

+0

非常感謝Ryan! – damari