每次路线段塞改变时的火力法

时间:2013-03-08 19:22:46

标签: ember.js ember-router

我有一个路由器设置,如下所示:

Social.Router.map(function() {
    this.resource('accounts', function(){
        this.resource('account', { path: ':account_id'});
    });
});

输入account路由时,我使用activate方法进行DOM操作。

Social.AccountRoute = Ember.Route.extend({
    activate: function(){
        console.log('entered the account route')
    }
});

这很有效,第一次输入帐户路线。问题是我可以在不离开帐户路线的情况下从一个帐户更改为帐户。意思是我可以来自:

account/1

account/2

但是第一次输入帐户路线时,activate方法只会触发一次。是否有方法会在每次account_id slug更改时触发?

2 个答案:

答案 0 :(得分:4)

不是一个非常直观的解决方案,但每次模型更改时都会执行3种方法:

  • 序列化
  • setupController
  • renderTemplate

答案 1 :(得分:2)

只有在输入新路线时才会触发

activatedeactivate。但是,model的每次更改都会调用方法setupControllerserialize/account/:account_id(编辑:正如@mavilein在评论中指出的那样,model只会在网址更改时被调用,而我会离开renderTemplate)。

无论如何,您的路由和控制器不应该关注DOM操作。通过绑定到重要值或观察控制器中的更改,将其保留到视图和模板中。