我正在使用AngularJS的最新项目。在文档和教程中,所有模型数据都将放入控制器范围。我知道,必须有可用于控制器,因此在相应的视图。
但我不认为该模型应该实际上在那里实现。它可能是复杂的,并有私有属性为例。此外,可能希望在另一个上下文/应用程序中重用它。将所有东西放入控制器会完全打破MVC模式。
这同样适用于任何模型的行为。如果我使用DCI architecture和单独的行为从数据模型,我将不得不引入额外的对象来保持行为。这将通过介绍角色和上下文来完成。
当然,模型数据和行为可以用纯javascript对象或任何“类”模式来实现。但是AngularJS的做法是什么呢?使用服务?
所以它归结到这个问题:
根据AngularJS最佳实践,如何实现从控制器解耦的模型?
如果你想要多个控制器可用的东西,你应该使用服务。这里有一个简单的例子:
原文链接:https://www.f2er.com/angularjs/148036.htmlmyApp.factory('ListService',function() { var ListService = {}; var list = []; ListService.getItem = function(index) { return list[index]; } ListService.addItem = function(item) { list.push(item); } ListService.removeItem = function(item) { list.splice(list.indexOf(item),1) } ListService.size = function() { return list.length; } return ListService; }); function Ctrl1($scope,ListService) { //Can add/remove/get items from shared list } function Ctrl2($scope,ListService) { //Can add/remove/get items from shared list }