2012-03-09 2 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. Я действительно не вижу, что я делаю неправильно.

Может ли кто-нибудь увидеть, что я делаю неправильно? Единственное, о чем я могу думать, это то, что Content установлен в пустой массив через Ember.A().

Я понятия не имею, что еще это может быть.

ответ

1

Я не совсем уверен, где ваша проблема, так как я а) не знаю или использую CoffeeScript и b) нет jsFiddle или рабочего примера. Но если я правильно это прочитаю, вы попытаетесь сделать следующее: See this jsFiddle, который работает так, как ожидалось. Надеюсь, это указывает на то, что вы в правильном направлении.

+1

Спасибо, я не звонил _super() из init. Это был бит, который я отсутствовал. Жаль, что это необходимо. – dagda1

1

Это Кофейный скрипт Синтаксическая ошибка.
Существует два решения (в зависимости от того, что вы хотите реализовать).

Второй пример будет использовать тот же массив для каждого экземпляра контроллера.
Кроме того, я рекомендую позвонить @_super() при переопределении метода init, иначе вы можете получить некоторые неожиданные результаты с определенными классами.

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

Ember.ArrayController.extend 
    content: Ember.A() 
    init: -> 
    @_super() 
    # content 
Смежные вопросы