如何从View中引用路由器生成的控制器

时间:2013-05-23 20:52:02

标签: controller ember.js ember-router

我的Ember应用程序中有以下代码......

App.Router.map(function () {
    this.resource('messages', { path: '/messages' }, function() {
        this.route('message', { path: '/:message_id' });
        this.route('unanswered', { path: '/unanswered' });
    });
});

App.MessagesRoute = Ember.Route.extend({
    setupController: function(controller, playlist) {
        controller.set('model', App.Message.find());
        //debugger;
    }
});

App.MessagesController = Ember.ArrayController.extend({
    testvar: 'hi',
    testme: function() {
        debugger;
    }
});

App.MyButton = Ember.View.extend({
    tagName: 'button',
    template: Ember.Handlebars.compile('Sort'),

    click: function() {
        App.MessagesController.testme();   
    }
});

...在我的模板中......

{{view App.MyButton}} 

在视图的click事件中,如何在我的路由器生成的控制器实例(MessagesController)上调用testme()方法?

谢谢你们!

1 个答案:

答案 0 :(得分:0)

您可以在MyButton视图点击事件处理程序中执行此操作:

this.get('controller').send('testme');
  

注意:为了实现这一点,MyButton必须是MessagesView

的孩子

示例:

App.MyButton = Ember.View.extend({
  tagName: 'button',
  template: Ember.Handlebars.compile('Sort'),
  click: function() {
    this.get('controller').send('testme');
  }
});

希望有所帮助