将指令控制器拆分成更小的部分

时间:2014-10-17 08:08:34

标签: angularjs angularjs-directive angularjs-controller

所以我已经使这个Plunker作为演示效果很好:http://plnkr.co/edit/Zm9d6zHhrnqDlnJsSZ1I?p=preview。它是一个简单的分页,包含两个属性参数,用于保存模型状态和一些配置状态。我想最终得到这样的指令工厂(或解释如何推理不同的东西):

angular.module('mnPagination').factory(function(model, config) {
  return {
    model: model,
    config: config
  }
})

我对当前plunker的问题是app层和指令层看起来并不相同。由于我只有一个应用程序,我可以使用工厂作为单例数据提供程序。那太棒了!

但在指令中,我不能使用任何类型的提供者,因为它将是一个单身人士。范围是每个声明的实例的新对象,因此我可以放置任何应该包含在指令中的有状态代码。

指令应该是无国籍的吗?

另一个更多的元问题:我是唯一一个对此感到害怕的人吗?

这是我的第二次尝试,在Facebook或工作中没有人真正进入MVVM / MVC或具有独立范围的指令。

我是Leya,来做我的路加!

1 个答案:

答案 0 :(得分:1)

所以我解决这个问题的方法是在角度工厂内创建一个工厂。

angular.module('mnPagination').factory('mnPaginationFactory', function() {
  var factory = function (items, config) {
    ...
  }

  return factory
}

现在我通过从控制器调用工厂获得每个指令的新对象,该控制器在作用域上有items和config对象。

此处是Plunker:http://plnkr.co/edit/DPTZUjeMihsva5nJ3IVx?p=preview