从外部范围访问Ember应用程序

时间:2014-10-14 16:06:54

标签: ember.js

我需要从将运行的脚本访问控制器模型 在余烬范围之外。此外,是否可以以相同的方式发送动作?

请举几个例子。

感谢。

更新

目的:我从我的chrome扩展中获取新模型,我需要将其设置为当前 控制器和更新视图。

1 个答案:

答案 0 :(得分:4)

我认为这是一个有趣的问题,我做了一点挖掘以找出答案。

获取应用程序

您可能知道您的Ember应用使用的是window.MyEmberApp等全局变量。在这种情况下,获取您的应用程序很容易。如果你不知道应用程序在哪里,那就有点棘手了。

我从the Ember Inspector

中提取了此代码
function getApplication() {
  var namespaces = Ember.Namespace.NAMESPACES,
      application;

  namespaces.forEach(function(namespace) {
    if(namespace instanceof Ember.Application) {
      application = namespace;
      return false;
    }
  });
  return application;
}

获取实例化控制器

您可以使用容器从您的应用程序访问您的实例化控制器:

var controller = app.__container__.lookup('controller:elephant');
controller.set('model', newModel);

大象'是控制器的名称。

我不确定您发送动作的确切含义,但是,是的,您可以进入控制器的操作对象并调用这些功能。

controller.actions.myAction.call(controller, 'arg1', 'arg2');

祝您的Chrome扩展程序好运!