gpt4 book ai didi

javascript - 将模型数据和行为放在哪里? [tl;博士;使用服务]

转载 作者:IT老高 更新时间:2023-10-28 11:04:03 26 4
gpt4 key购买 nike

我正在为我的最新项目使用 AngularJS。在文档和教程中,所有模型数据都放入 Controller 范围内。我知道它必须存在于 Controller 中,因此在相应的 View 中。

但是我认为该模型实际上不应该在那里实现。例如,它可能很复杂并且具有私有(private)属性。此外,人们可能希望在另一个上下文/应用程序中重用它。将所有内容都放入 Controller 中完全破坏了 MVC 模式。

这同样适用于任何模型的行为。如果我会使用 DCI architecture并将行为与数据模型分开,我将不得不引入额外的对象来保存行为。这将通过引入 Angular 色和上下文来完成。

DCI == Data C协作I交互

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

所以归结为这个问题:

如何按照 AngularJS 最佳实践实现与 Controller 分离的模型?

最佳答案

如果您想要多个 Controller 可以使用的东西,您应该使用服务。这是一个简单的人为示例:

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
}

关于javascript - 将模型数据和行为放在哪里? [tl;博士;使用服务],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com