Ember.JS-从内部控制器向外部控制器发送消息

Ember.JS-从内部控制器向外部控制器发送消息,ember.js,Ember.js,在Ember中,我有一个应用程序,其中有一个外部控制器,该控制器的模板在标准{{outlet}中呈现 但是,该模板包含一个命名的出口{{outlet details}},该控制器的一个操作不执行TransitionRoute(),该操作在该“details”出口内呈现,并且有一个内部控制器处理该嵌套模板 我需要做的是让内部模板/控制器上的操作触发外部控制器上的操作。看来余烬无法打破“出口”的壁垒。事件仅在门店内发生,而不发生在父门店 我尝试过的事情: 尝试了此.send()和此.sendActi

在Ember中,我有一个应用程序,其中有一个外部控制器,该控制器的模板在标准{{outlet}中呈现

但是,该模板包含一个命名的出口{{outlet details}},该控制器的一个操作不执行TransitionRoute(),该操作在该“details”出口内呈现,并且有一个内部控制器处理该嵌套模板

我需要做的是让内部模板/控制器上的操作触发外部控制器上的操作。看来余烬无法打破“出口”的壁垒。事件仅在门店内发生,而不发生在父门店

我尝试过的事情:

  • 尝试了此.send()和此.sendAction()
  • 尝试将外部控制器注入内部控制器(需要:“main”,main:Ember.computed.alias(“controllers.main”))-导致“未定义不是函数”错误
  • 在嵌套模板中使用{action}}标记并发送父控制器上存在的操作,会导致“操作'selectTab'未处理任何内容”。如果您确实处理了该操作,则该错误可能是由于控制器中的操作处理程序返回true而导致该操作冒泡”错误
  • 我所尝试的是可能的吗?我知道我可以用jQuery来模拟它,但我不想这样做,我更喜欢用“余烬方式”(如果有的话)来模拟

    App.IndexRoute = Ember.Route.extend({
      model: function() {
        return ['red', 'yellow', 'blue'];
      },
      renderTemplate: function(){
        this.render();
        var fooCont = this.controllerFor('foo');
        this.render('foo',{
          into:'application',
          outlet:'foo',
          controller:fooCont
        });
      }
    });
    
    App.ApplicationController = Em.Controller.extend({
      actions:{
        hello: function(val){
          alert(val);
        }
      }
    });
    
    App.FooController = Em.Controller.extend({
      needs:'application',
      application: Em.computed.alias('controllers.application'),
      actions:{
        sendToApp: function(){
          this.get('application').send('hello', 'world');
        }
      }
    });
    

    Kingpin2k。。。你真是多产史诗!:)