Javascript 余烬:如何注入视图?

Javascript 余烬:如何注入视图?,javascript,view,ember.js,dependency-injection,Javascript,View,Ember.js,Dependency Injection,假设我有一些可重复使用的东西: App.FooUtil=Ember.Object.extend({ foo:function(){ 返回“bar”; } }); 然后我这样注册: App.register('util:fooUtil',App.fooUtil); 我试图将其“注入”到我的观点中: App.inject('view', 'fooUtil', 'util:fooUtil'); 现在假设我有这样的观点: App.SuperView=Ember.View.extend({ 上下文菜

假设我有一些可重复使用的东西:

App.FooUtil=Ember.Object.extend({
foo:function(){
返回“bar”;
}
});
然后我这样注册:

App.register('util:fooUtil',App.fooUtil);
我试图将其“注入”到我的观点中:

App.inject('view', 'fooUtil', 'util:fooUtil');
现在假设我有这样的观点:

App.SuperView=Ember.View.extend({
上下文菜单:函数(evt){
//这始终是未定义的!
var fooUtil=this.get('fooUtil');
alert(fooUtil.foo());
event.preventDefault();
}
});
{{{#view App.SuperView}}右键单击我!{{/view}
我根本无法将实用程序类注入到我的视图中。有什么好处? 我的头撞在墙上,我也试过:

App.inject('views', 'fooUtil', 'util:fooUtil');
App.inject('view:index', 'fooUtil', 'util:fooUtil');
App.inject('view:topLevel', 'fooUtil', 'util:fooUtil');
App.inject('view:super', 'fooUtil', 'util:fooUtil');

fooUtil
注入所有控制器是否有缺点?那么您的代码将如下所示:

App.SuperView = Ember.View.extend({
   contextMenu: function(evt) {
      var fooUtil = this.get('controller.fooUtil');
      window.alert(fooUtil.foo());
      event.preventDefault();
   }
});
你在哪里打针?我通常用初始值设定法

Ember.Application.initializer({

  name: 'fooUtil',
  after: 'store',

  initialize: function(container) {
    container.injection('controller', 'fooUtil', 'util:fooUtil');
  }
});

一点也不。。。但是作为一个新的Ember用户,我完全违反直觉,我必须在视图中向控制器中注入一些东西来访问它,而其他一切似乎都更有针对性。你具体想用util做什么?没什么重要的,它是一个到处使用的实用函数。就我所见,没有直观的方法将其注入到视图中。。。你的回答奏效了。谢谢