如何使用 Ember.sendEvent 将事件发送到每个实例化的控制器
How do I use Ember.sendEvent to send an event to every instantiated controller
我的应用程序路由中有一个操作,导致发生全局更改。 此全局更改涉及一些异步处理(承诺),当解决时,需要我向实例化的控制器发送事件。侦听事件的控制器需要刷新一些视图。
更具体地说,我正在下载一些字体,任何具有画布视图的控制器都需要重新绘制。
我知道哪些控制器有画布。 如果控制器尚不存在,则使用 controllerFor
将实例化控制器,这很糟糕。同样,__container__.lookup
也会这样做。
如果这个设计是废话,请告诉我。 但除此之外,如何获取实例化的控制器?
此外,字体无法预加载,因为它们很大(每个 5MB)。 相反,我们使用的是发送仅包含我们请求的字符的字体的服务。如果用户键入其他字符,我们必须请求新字体。
从应用程序路由中,此代码用于获取所有实例化的控制器。 但是感觉很脏,所以我坚持一个更好的答案。
controllers: function() {
var conatiner, regex;
container = this.get("container");
regex = /^controller:/;
return Ember.keys(container.cache.dict).filter(function(key) {
return key.match(regex);
}).map(function(key) {
return container.lookup(key);
});
}.property().volatile().readOnly(),
triggerEvent: function() {
this.get("controllers").forEach(function(controller) {
Ember.sendEvent(controller, "didLoadFont");
});
}
相关文章:
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 如何在用户输入时实例化数组
- 在requirejs中共享实例化对象
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- 角度 JS 控制器未实例化
- 在具有多个控制器的模块中实例化$scope
- 实例化自定义角度控制器
- 角度控制器在缩小后不实例化
- AngularJS新路由器无法实例化控制器
- 在 AngularJS 中实例化和初始化控制器
- 在 SAPUI5 中实例化片段时传递另一个控制器
- 使用 requirejs 实例化 canjs 控制器时出错
- 如何使用 Ember.sendEvent 将事件发送到每个实例化的控制器
- 强制路由实例化新的控制器/视图对,而不是更改模型
- 如何根据条件实例化控制器
- 在控制器中使用实例化的对象引用
- 具有多个视图的angular ui路由器状态&控制器实例化
- Url歧义导致UI路由器实例化控制器两次
- 角度控制器不会被调用或实例化
- 角指令单元测试中的模拟控制器实例化