我需要从将运行的脚本访问控制器模型 在余烬范围之外。此外,是否可以以相同的方式发送动作?
请举几个例子。
感谢。
更新
目的:我从我的chrome扩展中获取新模型,我需要将其设置为当前 控制器和更新视图。
答案 0 :(得分:4)
我认为这是一个有趣的问题,我做了一点挖掘以找出答案。
您可能知道您的Ember应用使用的是window.MyEmberApp
等全局变量。在这种情况下,获取您的应用程序很容易。如果你不知道应用程序在哪里,那就有点棘手了。
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扩展程序好运!