在Ember.js中,setupController和模型钩子只适用于动态段吗?

时间:2013-03-22 12:26:00

标签: ember.js

我想了解setupControllermodel挂钩,只有在动态细分的情况下才会调用它们吗?

这是我的路由器配置,我看到应用程序工作正常,但我没有看到这些钩子被执行:

// Router, this need to connect view and controller
App.Router.map(function(){
  this.resource("login", {path : "/"});
  this.resource("home" , {path : "home/:home_id"});
});

App.Router.IndexRoute = Ember.Route.extend({
  setupController:function(controller,model){
    console.log("in setupController hook for index route");
  }
});

App.Router.LoginRoute = Ember.Route.extend({
  setupController:function(controller,model){
    console.log("in setupController hook for login route");
  }
});

App.Router.HomeRoute = Ember.Route.extend({
  setupController:function(controller,model){
    console.log("in setupController hook for login route");
  }
});

1 个答案:

答案 0 :(得分:9)

假设您使用的是最新的余烬(1.0.0-RC.1)您应该像这样定义您的路线:

App.HomeRoute = Ember.Route.extend({
  ...
});

他们是您App的一部分,并且没有Router部分。

Working JSBin example

关于modelsetupController挂钩行为的说明:

在路线中,只有在直接导航到包含动态细分的网址时才会调用model。传递到model的参数用于使用动态段检索该路线的模型。

如果使用{{#linkTo route myObject}}transitionTo(myObject)调用到达路线,则传递的对象用于直接呼叫setupController,并且不会调用model

每次路线进入

时,都会调用setupController挂钩

Ember API docs for model

Ember API docs for setupController