在Ember中,您可以使用初始化程序将对象注入视图,如下所示(Ember-CLI语法):
export default {
name: 'sayHello',
initialize: function(container, app) {
var thing = function() {
return 'Hello';
};
app.register('sayHello:main', sayHello, { instantiate: false });
app.inject('view', 'sayHello', 'sayHello:main');
}
};
这会将方法注入所有视图,包括链接tos,输入,集合视图中的列表项等。如果注入的内容大小合适,这似乎会妨碍应用程序的性能。在许多情况下,您只想将某些内容注入到特定于路由的视图或控制器中。我的意思是,Ember会自动将当前路线与之相关联。
问题:有没有办法将对象注入特定于路径的视图而不是注入链接,输入等,并且将方法注入到所有视图中会明显地抑制应用程序的性能
答案 0 :(得分:0)
灰烬指南说:
也可以在特定工厂使用其完整注射 名:
application.inject('route:index', 'logger', 'logger:main');
- http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/
所以问题是 - 你要针对哪家工厂。
我不确定是否有包含所有用户定义视图的工厂,但不包括所有框架视图。您应该可以使用view:application
等来定位单个视图
一个选项可能是拥有一个代理视图,该视图扩展了Ember.View,并从中扩展了所有应用视图。