如何在视图转换上触发代码

时间:2014-11-11 15:32:14

标签: ember.js coffeescript

我有这样的观点。

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')

我希望能够在视图更改为新模型时触发,例如,如果我们在应用程序中从route / test / 123转到/ test / 456。上面的代码适用于此但看起来很奇怪。我不认为我应该关注观点的状态。有没有正确的"这个怎么样?我似乎无法找到任何其他选择。我尝试过使用on(' init')挂钩,但如果我使用它,控制器似乎是未定义的。

1 个答案:

答案 0 :(得分: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