我在setupController中设置isActive
:
App.EntryRoute = Ember.Route.extend
setupController: (controller) ->
controller.set('isActive', true)
我希望在更改路线时删除它。
最好的方法是什么?何时删除控制器有什么钩子?
编辑:看来我问错了。我希望在更改模型时触发此操作,这意味着deactivate
将不起作用,因为它只会在您离开路线时更改。
答案 0 :(得分:2)
我希望在更改路线时将其删除。做这个的最好方式是什么?
你正在寻找的是路线的deactivate
钩子。虽然不是setupController
的严格“相反”,但只要路由器退出路由,就会调用deactivate
。文档:http://emberjs.com/api/classes/Ember.Route.html#method_deactivate
答案 1 :(得分:1)
正如@Mike Grassotti已经提到deactivate
和他的对手activate
是您可能需要解决的问题,这就是EntryRoute的样子:
App.EntryRoute = Ember.Route.extend
activate: () ->
@controllerFor('index').set('isActive', true)
deactivate: () ->
@controllerFor('index').set('isActive', false)
希望有所帮助
答案 2 :(得分:0)
要监视content
是否发生更改,您可以创建一个计算属性,该属性会观察“内容”的键,或者已加载的模型中已修复的内容。虽然我没有正确检查,但代码如下:
modelChanged: function() {
//do something here
}.observes('key_in_model')
但我不明白的是,您的代码在某些时候会更改控制器中加载的模型。难道你不能使用那些代码来完成你需要完成的转换/表达式等等吗?