所以我已经使这个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,来做我的路加!
答案 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。