我有如下路线图。
App.Router.map(function() {
this.resource('category', function() {
this.resource('field', { path: ':field_id' });
});
});
每当字段路由发生变化时,我都需要调用 FieldController 中的函数。有没有办法做到这一点?
init
Controller 中的函数只被调用一次。
我有如下路线图。
App.Router.map(function() {
this.resource('category', function() {
this.resource('field', { path: ':field_id' });
});
});
每当字段路由发生变化时,我都需要调用 FieldController 中的函数。有没有办法做到这一点?
init
Controller 中的函数只被调用一次。
就像@knikolov 所说,您可以afterModel
在转换到FieldRoute
. 要获取FieldController
实例,您可以使用this.controllerFor('field')
:
App.FieldRoute = Ember.Route.extend({
afterModel: function() {
this.controllerFor('field').myMethod();
}
});
App.FieldController = Ember.ObjectController.extend({
myMethod: function() {
alert('myMethod');
}
});
你有两个选项可以做你想做的事,它们都使用Route 类的 setupController 钩子。
第一种方法是在 setupController 函数中做任何你想做的事情,如下所示:
setupController: function(controller, model){
alert('myAlert');
}
第二种方法是从你的路由的 setupController 钩子中调用控制器的方法。我做了一个小提琴来展示它是如何工作的:http: //jsfiddle.net/NQKvy/237/
当 URL 更改时,这两种方法都会触发该函数。如果你想在同一个 URL 中触发一个函数,那么它就完全不同了。
让我知道小提琴是否回答了您的问题。