2012-03-09 4 views
3

에 객체를 삽입하지 난 다음 ArrayController 있습니다Ember.js PushObject는 ArrayController

Lead.Controllers.Leads = Ember.ArrayController.extend 
    init: -> 
    content: Ember.A() 

    @view = Ember.View.create 
     controller: @ 
     templateName: 'app/templates/leads/list' 

    @view.appendTo $('#leads') 

    addLead: (data) -> 
    lead = Lead.Lead.create() 
    lead.setProperties JSON.parse data 
    console.log lead.get 'company' 
    debugger 
    @pushObject lead 
    console.log @get('length') 

문제는 내가 푸시 개체를 호출 한 후, 길이는 여전히 0입니다. 나는 내가 뭘 잘못하고 있는지 정말로 볼 수 없다.

내가 뭘 잘못하고 있는지 알 수 있습니까? 내가 생각할 수있는 유일한 것은 콘텐츠가 Ember.A()을 통해 빈 배열로 설정된다는 것입니다.

나는 그것이 무엇이 될 수 있는지 전혀 모른다.

답변

1

내가 커피 스크립트를 잘 모르거나 사용하지 않고 b) 거기에 jsFiddle 또는 작동 예제가 없기 때문에 문제가 어디 있는지 잘 모르겠습니다. 그러나 만약 내가 이것을 정확하게 읽고 다음을 시도하고있다 : See this jsFiddle 예상대로 작동합니다. 올바른 방향으로 당신을 가리키는 희망.

+1

감사합니다. init에서 _super()를 호출하지 않았습니다. 그게 내가 놓친 비트 야. 그것은 필요한 동정이다. – dagda1

1

커피 스크립트 구문 오류입니다.
구현할 대상에 따라 두 가지 솔루션이 있습니다.

두 번째 예제는 컨트롤러의 모든 인스턴스에 동일한 배열을 사용합니다.
또한 init 메서드를 재정의 할 때 @_super()을 호출하는 것이 좋습니다. 그렇지 않으면 특정 클래스에서 예기치 않은 결과가 발생할 수 있습니다.

Ember.ArrayController.extend 
    init: -> 
    @_super() 
    @set 'content', Ember.A() 
    # content 

Ember.ArrayController.extend 
    content: Ember.A() 
    init: -> 
    @_super() 
    # content