2

我有如下路线图。

App.Router.map(function() {
    this.resource('category', function() {
        this.resource('field', { path: ':field_id' });
    });
});

每当字段路由发生变化时,我都需要调用 FieldController 中的函数。有没有办法做到这一点?

initController 中的函数只被调用一次。

4

2 回答 2

3

就像@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');
    }
});

这是此示例的小提琴http://jsfiddle.net/marciojunior/Q5XWg/

于 2013-09-24T13:54:33.073 回答
3

你有两个选项可以做你想做的事,它们都使用Route 类的 setupController 钩子。

第一种方法是在 setupController 函数中做任何你想做的事情,如下所示:

setupController: function(controller, model){
 alert('myAlert');
}

第二种方法是从你的路由的 setupController 钩子中调用控制器的方法。我做了一个小提琴来展示它是如何工作的:http: //jsfiddle.net/NQKvy/237/

当 URL 更改时,这两种方法都会触发该函数。如果你想在同一个 URL 中触发一个函数,那么它就完全不同了。

让我知道小提琴是否回答了您的问题。

于 2013-09-24T14:05:31.107 回答