javascript - Ember : How do I inject into a view?

标签 javascript view ember.js dependency-injection

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

App.FooUtil = Ember.Object.extend({
   foo: function () {
      return "bar";
   }
});

然后我像这样注册它:

App.register('util:fooUtil', App.FooUtil);

然后我尝试将它“注入(inject)”到我的 View 中:

App.inject('view', 'fooUtil', 'util:fooUtil');

现在假设我有这个 View :

App.SuperView = Ember.View.extend({
   contextMenu: function(evt) {
      //This is ALWAYS undefined!
      var fooUtil = this.get('fooUtil');
      window.alert(fooUtil.foo());
      event.preventDefault();
   }
});
{{#view App.SuperView}}Right Click Me!{{/view}}

我根本无法将实用程序类注入(inject)到我的 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 注入(inject)所有 Controller 是否有缺点?那么您的代码将如下所示:

App.SuperView = Ember.View.extend({
   contextMenu: function(evt) {
      var fooUtil = this.get('controller.fooUtil');
      window.alert(fooUtil.foo());
      event.preventDefault();
   }
});

还有你在哪里做注入(inject)?我通常在初始化程序中执行此操作。

Ember.Application.initializer({

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

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

关于javascript - Ember : How do I inject into a view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898279/

相关文章:

javascript - 没有波浪号 (~) 无法从 node_modules 导入样式表

ember.js - 绑定(bind)到 StateManager 的 Ember 导出在更改状态两次后不会呈现

javascript - 在渲染路线之前在 Ember 中请求

javascript - 判断div是否滚动到底部

javascript - Three.js 将文本渲染到场景

javascript - Recaptcha - 脚本标签注入(inject)偶尔失败

swift - SKScene View 渲染问题(见图)

jsf - JSF View 实例 : new view, 初始 View 和回发 View 之间的差异

android - 如何关闭 View 类以返回到父 Activity ?

javascript - 如何异步删除多个文件?