2014-11-11 3 views
0

У меня есть что-то вроде этого.Как вызвать код при переходе на просмотр

App.TestView = Em.View.extend 
    templateName: 'test' 
    modelDidChange: (() -> 
    # fires twice, need to check state to make sure it doesn't 
    if @state is 'preRender' 
     # ...do stuff 
).observes('controller.content') 

Я хочу, чтобы иметь возможность запускать всякий раз, когда просматривать изменения в новую модель, к примеру, если бы мы должны были идти от маршрута/теста/123 к/теста/456 в моем приложении. Приведенный выше код работает для этого, но кажется странным. Я не думаю, что я должен смотреть на состояние взгляда. Есть ли «правильный» способ обойти это? Кажется, я не вижу других вариантов. Я попытался использовать привязку on ('init'), но контроллер, похоже, не определен, если я его использую.

+0

Один не помечать вопрос с JavaScript, когда нет JavaScript в нем. – Pavlo

+0

Извините за это. Не думал, когда я добавил tag.it, похоже, был исправлен. Не уверен, что это вы или нет, но спасибо за то, что pointingit вне :) – kyassuru

ответ

1

Я бы сделал это на маршруте, используя крючок setupController. Он будет вызываться при изменении модели.

App.TestRoute = Ember.Route.extend({ 
    setupController: function (controller, model) { 
    // Call _super for default behavior 
    this._super(controller, model); 
    console.log('model change:'+model.get('id')); 
    # ...do stuff 
    } 
}); 

jsbin Например: http://emberjs.jsbin.com/potehi/1/edit

Смежные вопросы