我需要从将在 ember 范围之外运行的脚本访问控制器模型。另外,是否可以以相同的方式发送动作?
请举几个例子。
谢谢。
更新
目的:我从我的 chrome 扩展中获取新模型,我需要将其设置为当前控制器并更新视图。
我认为这是一个有趣的问题,我做了一些挖掘以找出答案。
您可能知道您的 Ember 应用程序使用了一个全局变量,如window.MyEmberApp. 在这种情况下,获取您的应用程序很容易。如果您不知道应用程序在哪里,那就有点棘手了。
我从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;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用容器从您的应用程序访问您的实例化控制器:
var controller = app.__container__.lookup('controller:elephant');
controller.set('model', newModel);
Run Code Online (Sandbox Code Playgroud)
其中“大象”是您的控制器的名称。
我不确定“发送动作”的确切含义,但是是的,您可以访问控制器的动作对象并调用这些函数。
controller.actions.myAction.call(controller, 'arg1', 'arg2');
Run Code Online (Sandbox Code Playgroud)
祝你的 Chrome 扩展程序好运!
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |