2012-03-09 8 views
3

にオブジェクトを挿入していないI以下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

私はa)CoffeeScriptを実際に知っていないか使用していないし、b)jsFiddleや実際の例がないので、どこに問題があるのか​​よくわからない。しかし、もし私がこれを正しく読んでいたら、あなたは次のことをしようとしています:See this jsFiddle期待どおりに動作します。あなたが正しい方向に向かうことを願っています。

+1

ありがとう、私はinitから_super()を呼び出していませんでした。それが私が行方不明のビットだった。それは必要な同情です。 – dagda1

1

コーヒースクリプト構文エラーです。
2つの解決策があります(実装する内容によって異なる)。

2番目の例では、コントローラのすべてのインスタンスで同じ配列が使用されます。
また、initメソッドをオーバーライドするときは@_super()を呼び出すことをおすすめします。そうしないと、特定のクラスで予期しない結果が生じることがあります。

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

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