注入Ember视图

时间:2014-08-07 15:47:26

标签: ember.js dependency-injection

在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会自动将当前路线与之相关联。

问题:有没有办法将对象注入特定于路径的视图而不是注入链接,输入等,并且将方法注入到所有视图中会明显地抑制应用程序的性能

1 个答案:

答案 0 :(得分:0)

灰烬指南说:

  

也可以在特定工厂使用其完整注射   名:

application.inject('route:index', 'logger', 'logger:main');
     

- http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/

所以问题是 - 你要针对哪家工厂。

我不确定是否有包含所有用户定义视图的工厂,但不包括所有框架视图。您应该可以使用view:application等来定位单个视图

一个选项可能是拥有一个代理视图,该视图扩展了Ember.View,并从中扩展了所有应用视图。