5

isActive在 setupController 中设置:

App.EntryRoute = Ember.Route.extend
    setupController: (controller) ->
        controller.set('isActive', true)

我想在路线更改时将其删除。

做这个的最好方式是什么?移除控制器时是否有任何挂钩?

编辑:看来我问错了。我想在模型改变时触发这个,意思是deactivate不起作用,因为它只有在你离开路线时才会改变。

4

3 回答 3

2

我想在路线更改时将其删除。做这个的最好方式是什么?

可能您正在寻找的是路线的deactivate钩子。虽然不是严格“相反”的setupController,deactivate将在路由器退出路由时调用。此处的文档:http: //emberjs.com/api/classes/Ember.Route.html#method_deactivate

于 2013-05-11T04:13:25.593 回答
1

正如@Mike Grassotti 已经提到deactivate的,他的对手activate是您解决问题可能需要的,这就是您的 EntryRoute 的样子:

App.EntryRoute = Ember.Route.extend
  activate: () ->
    @controllerFor('index').set('isActive', true)

  deactivate: () ->
    @controllerFor('index').set('isActive', false)

希望能帮助到你

于 2013-05-11T11:53:31.833 回答
0

要监视是否content更改,您可以创建一个计算属性,该属性观察“内容”的键,或者您已加载的模型中固定的内容。虽然我没有正确检查这个,但代码会是这样的:

modelChanged: function() {
  //do something here
  }.observes('key_in_model')

不过,我不明白的是,您的代码有时会更改控制器中加载的模型。您不能使用该代码来执行您需要完成的转换/表达式/等吗?

于 2013-05-11T23:21:10.140 回答