将数据对象注入AngularJS中的指令工厂

时间:2014-10-14 20:32:43

标签: angularjs angularjs-directive angularjs-scope

所以我有一个指令,它将数据对象作为参数引入范围。问题是我处理服务层中的所有数据。

所以这是一些正常的非指令性代码:

angular.module('app').factory('appFactory', ['appValues', function(appValues) {
    var getStuff = function() { return appValues.stuff; };
}]);

但是如果想在指令中重用工厂并将appValues作为参数:

angular.module('app').directive('myDir', [function() {
    return {
    ...
        scope: {
            values: '='
        }
    ....
    };
}]);

但这将它放在范围而不是我的数据层。所以现在我需要将values对象发送到我的指令工厂中的每个函数调用:

angular.module('app').factory('myDirFactory', [function() {
    var getStuff = function(values) { return values.stuff; };
}]);

是否有任何好的模式可以解决这个问题并将数据保留在数据层并绕过范围/控制器?

此外,工厂将是指令实例之间共享的单身人士?那我该怎么解决呢?某种程度上创建一个新的注入器提交将大量数据对象逻辑放入控制器(我以为我不认为这样做)?

1 个答案:

答案 0 :(得分:1)

就在不久之前,我想简单的灵魂只是提供一个函数initialize(value) {... return {...};},然后返回的对象可以访问value参数,而不会在任何地方将它作为参数提供:

angular.module('myDir').factory('myDirFactory', [function() {

  var initialize = function(values) {
    var getStuff = function() {
      return values;
    };

    return {
      getStuff: getstuff;
    };
  };

  return {
    initialize: initialize
  };
}]);