是否与setupController相反?

时间:2013-05-11 02:34:10

标签: ember.js

我在setupController中设置isActive

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

我希望在更改路线时删除它。

最好的方法是什么?何时删除控制器有什么钩子?

编辑:看来我问错了。我希望在更改模型时触发此操作,这意味着deactivate将不起作用,因为它只会在您离开路线时更改。

3 个答案:

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

但我不明白的是,您的代码在某些时候会更改控制器中加载的模型。难道你不能使用那些代码来完成你需要完成的转换/表达式等等吗?