2012-06-01 2 views
1

나는 범주 목록을 가지고 있습니다. 각 카테고리는 하위 카테고리를 가질 수 있습니다. 이 jsFiddle에서 봐 나는 subCategories 배열로 하위 카테고리를 밀어 경우 문제는,이 App.CategoryEmber.js - 객체 내 ArrayProxy 정의

의 모든 인스턴스에 밀려있다

App.Category = Em.Object.extend({ 
    id: null, 
    name: null, 
    subCategories: Em.ArrayProxy.create({content: []}) 
}); 

: 이 제작 한 모델입니다 .

왜 이런 일이 벌어지고 있는지 이해할 수 없으며 제대로 작동하려면 어떻게 다시 작성해야합니까?


코드 :

extend에 전달 된 해시 클래스가 인스턴스화되는 객체의 프로토 타입에 속성을 정의하기 때문이다
App.Category = Em.Object.extend({ 
    id: null, 
    name: null, 
    subCategories: Em.ArrayProxy.create({content: []}) 
}); 

App.categories = Em.ArrayController.create({ 
    content: [], 

    // assumes list of categories is ordered by parent id 
    loadCategories: function(cats) { 
     for (var i=0, cat; i < cats.length; i++) { 
      var parentID = cats[i].parentID; 
      delete cats[i].parentID; 
      cat = App.Category.create(cats[i]); 

      if (parentID !== null) { 
       var parent = this.findProperty('id', parentID); 
       parent.get('subCategories').pushObject(cat); 
      } else { 
       this.pushObject(cat); 
      } 
     }; 
    } 
}); 

답변

2

. 반면 create은 인스턴스화 된 객체의 속성을 정의합니다. Dan Gebhardt의 블로그 게시물은 Understanding Ember.js Object입니다. 그것을 확인해야합니다.

다음과 같이 귀하의 문제가 해결 될 수

, http://jsfiddle.net/pangratz666/hXHqs/ 참조 :

App.Category = Em.Object.extend({ 
    init: function() { 
     this._super(); 
     this.set('subCategories', Em.ArrayProxy.create({ 
      content: [] 
     })); 
    } 
});