加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 在哪里放置模型数据和行为?

发布时间:2020-12-17 09:36:20 所属栏目:安全 来源:网络整理
导读:我正在使用AngularJS的最新项目。在文档和教程中,所有模型数据都将放入控制器范围。我知道,必须有可用于控制器,因此在相应的视图。 但我不认为该模型应该实际上在那里实现。它可能是复杂的,并有私有属性为例。此外,可能希望在另一个上下文/应用程序中重
我正在使用AngularJS的最新项目。在文档和教程中,所有模型数据都将放入控制器范围。我知道,必须有可用于控制器,因此在相应的视图。

但我不认为该模型应该实际上在那里实现。它可能是复杂的,并有私有属性为例。此外,可能希望在另一个上下文/应用程序中重用它。将所有东西放入控制器会完全打破MVC模式。

这同样适用于任何模型的行为。如果我使用DCI architecture和单独的行为从数据模型,我将不得不引入额外的对象来保持行为。这将通过介绍角色和上下文来完成。

当然,模型数据和行为可以用纯javascript对象或任何“类”模式来实现。但是AngularJS的做法是什么呢?使用服务?

所以它归结到这个问题:

根据AngularJS最佳实践,如何实现从控制器解耦的模型?

如果你想要多个控制器可用的东西,你应该使用服务。这里有一个简单的例子:
myApp.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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读