2

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

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 更改时触发?

4

2 回答 2

4

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

  • 连载
  • 设置控制器
  • 渲染模板
于 2013-03-08T20:06:02.533 回答
2

activate并且deactivate仅在进入新路线时触发。但是,方法modelsetupControllerserialize将随着 的每次更改而被调用/account/:account_id(编辑:正如@mavilein 在评论中指出的那样,model只有在被 URL 更改触发时才会调用,我离开了renderTemplate)。

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

于 2013-03-08T20:02:45.370 回答