2012-09-18 4 views
2

개체 목록을 설정하고 content [] 배열 목록에 추가하십시오. 지금까지는 너무 좋아. App.list의 Ember DOM이 올바른 데이터를 표시합니다. 이제, App.list에있는 모든 객체를 remove/add/replaceAt()없이 내용 속성을 변경하기 시작하면 Ember가이 문제를 해결하지 못하는 것처럼 보입니다.제거하거나 추가하지 않고 내용 [] 개체 속성을 변경하십시오.

보기 : {{item.title}} {{/ 각}}

코드 {App.list.content}에서 {#each 항목} : 기능을 myApp() { 앱 = Ember.Application.create ({}); { App.list.content가 [I] .title = "I 변경 (; 나는 2 < I ++ I = 0 VAR)에 대한 :

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에서 I 이렇게 당신"; }

내 App.list에서 콘텐츠를 볼 수 있지만보기가 정확하지 않습니다. 내가 놓친 게 있니? ArrayHasChanged()가 배열 크기가 변경되거나 객체가 변경되지 않는 것 같아 보인다면 content [] 배열의 특정 객체 내에서 속성 데이터를 변경합니다. 그것은 가능합니까 또는 removeAt()/Add/Delete 객체가 필요합니까?

답변

1

옵저버/바인딩이 변경 사항을 트리거하도록 get 및 set을 사용해야합니다.

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

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

그래도 문제가 해결되지 않으면 누락 된 항목이있을 수 있습니다. 당신이 많이 도움이 될 jsfiddle을 게시 할 수 있다면!

+0

대단히 감사합니다. Ryan! – damari

관련 문제