javascript - 让 AngularJS 将依赖项注入(inject)对象,就像它已经为 Controller 所做的那样

标签 javascript dependency-injection angularjs

我正在使用 AngularJS 1.0.2 与 jQuery 1.8.2 并且我正在尝试让 AngularJS 将依赖项注入(inject)对象,就像它对 Controller 所做的那样。您可以在 jsFiddle 上找到一个基本示例,在那里你会发现两个 Controller (ListNewItem),一个对象(Item)和一个带有服务的模块(名为 服务通信)。

我的问题是 Item:

var Item = function (name, price) {
    var self = this;

    self.name = name;
    self.price = price;

    self.pretty = function () {
        return self.name + ": " + self.price;
    };
};

在其中我需要使用一些外部的东西,假设我想要 pretty 方法将 price 属性格式化为货币感知字符串:

self.pretty = function () {
    return self.name + ": " + $filter("currency")(self.price);
};

但这行不通,因为 $filter 没有定义。 (请注意,$filter 的用法只是一个例子,它可以是任何东西。)

并且将 var Item = function (name, price) { 修改为 var Item = function ($filter, name, price) { 也不起作用,因为创建对象的不是 AngularJS(在 Controller 的情况下),而是我。

那么,我怎样才能让 AngularJS 为我创建对象,或者让它解决我需要的依赖关系?

类似于 var item = angular.create(Item, $scope.name, $scope.price);var item = new Item(angular.inject("filter") , $scope.name, $scope.price); 我想...

最佳答案

通过使用 $injector 可以要求 AngularJS 实例化您自己的对象(并向它们注入(inject)依赖项!)服务及其instantiate(Type, locals)方法。

例如,给定这样的构造函数:

var Item = function ($filter, name, price) {
    var self = this;

    self.name = name;
    self.price = price;

    self.pretty = function () {
        return $filter('json')(self);
    };
};

可以像这样创建一个 Item 的实例:

var item = $injector.instantiate(Item, { name: $scope.name, price: $scope.price });

请注意,instantiate 方法接受 2 个参数:

  • 类型:构造函数。
  • locals:值的散列值不应注入(inject),而是按原样使用。

这是一个working jsFiddle (初始版本的简化版本)。

关于javascript - 让 AngularJS 将依赖项注入(inject)对象,就像它已经为 Controller 所做的那样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13395962/

相关文章:

javascript - 尝试使用 setInterval 每秒更改一个 div 的背景颜色。查询

javascript - HTML 实体十六进制字符引用不起作用

Angular2 如何将所有接口(interface)实现注入(inject)到列表服务中?

java - Guice 辅助注入(inject)单例范围

javascript - AngularJS 为所有条目切换 ngShow

angularjs - Angular ui-grid 动态计算网格的高度

javascript - WinJS 条形码读取器问题(图像未在 Canvas 中加载)

javascript - 将循环回调连接到 promise 链

python - 有没有像 python 的通用依赖解析库这样的东西?

html - 限制 HTML 和 AngularJs 中的特殊字符