7

我试图理解setupControllerandmodel钩子,它们是否只会在动态段的情况下被调用?

这是我的路由器配置,我看到应用程序运行良好,但我没有看到这些钩子被执行:

// 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");
  }
});
4

1 回答 1

9

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

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

他们是你的一部分App,但没有Router一部分。

工作 JSBin 示例

作为关于钩子行为model的注释:setupController

在路由中,model只有在直接导航到包含动态段的 URL 时才会调用。传入的参数model用于使用动态段检索该路由的模型。

{{#linkTo route myObject}}如果使用or调用到达路由,transitionTo(myObject)则传递的对象用于setupController直接调用model而不被调用。

setupController每次路由进入

Ember API 文档model

Ember API 文档setupController

于 2013-03-22T12:51:29.930 回答