AngularJS中模型内部服务的最佳实践?
我正在使用AngularJS开发一个web应用程序。我在同一个视图中有几个控制器,它们呈现一些中心数据的不同表示。其中一个视图是文本视图,另一个是表视图,第三个是图形视图 在阅读如何使用AngularJS以最优雅的方式实现这一点时,我将我的模型集中在一个服务中,该服务通过getter允许控制器获取对模型的引用。使用这种方法,当该中心模型中发生任何变化时,视图会随着AngularJS的内部魔力完美地自我更新,因为模型会暴露在每个控制器上的作用域中 但是我收到了其他开发人员的一些评论,认为这种方法不是好的实践。他们建议控制器只向控制器提供模型的副本,如果模型发生更改,控制器应填充事件,以便控制器请求更新模型的新副本。对我个人来说,这感觉就像给一个实现增加了复杂性,在AngularJS之上重新发明了轮子,AngularJS通过自己的脏检查自动为我处理一些事情 在服务中引用模型真的是一种糟糕的做法吗?若然,原因为何 在我看来,建议的事件想法是非常糟糕的做法,因为它迫使我在$rootScope上广播事件,因为服务没有自己的作用域。尝试这种想法会导致应用程序中的视图更新明显慢得多,AngularJS必须做更多的工作才能获得相同的结果(广播事件,在每个控制器中添加事件处理程序,创建并返回同一模型的多个副本,在每个控制器作用域中设置这些不同的副本,以便AngularJS仅在脏检查时作出反应) 看看你们这些家伙对这个话题的感受会很有趣AngularJS中模型内部服务的最佳实践?,angularjs,model-view-controller,model,controller,Angularjs,Model View Controller,Model,Controller,我正在使用AngularJS开发一个web应用程序。我在同一个视图中有几个控制器,它们呈现一些中心数据的不同表示。其中一个视图是文本视图,另一个是表视图,第三个是图形视图 在阅读如何使用AngularJS以最优雅的方式实现这一点时,我将我的模型集中在一个服务中,该服务通过getter允许控制器获取对模型的引用。使用这种方法,当该中心模型中发生任何变化时,视图会随着AngularJS的内部魔力完美地自我更新,因为模型会暴露在每个控制器上的作用域中 但是我收到了其他开发人员的一些评论,认为这种方法不
祝大家新年快乐!服务应返回您的查询结果,如:
function getData() {
return $http.get("/user/123");
}
控制器应使用该数据:
$scope.userInfo = [];
yourService.getData().then(function (result) {
$scope.userInfo = result.data;
}
你写道:
他们建议控制器只向控制器提供模型的副本,如果模型发生更改,控制器应填充事件,以便控制器请求更新模型的新副本
我不知道这是否算是一种不好的做法,我肯定不会这样做。正如你所提到的,Angular已经在管理模型更改时触发的事件,所以我同意你的看法,这是一件额外的不必要的事情,但我可能被证明是错的
以下是一些很好的指导原则,也许您可以在项目中使用它们:服务应返回查询结果,如:
function getData() {
return $http.get("/user/123");
}
控制器应使用该数据:
$scope.userInfo = [];
yourService.getData().then(function (result) {
$scope.userInfo = result.data;
}
你写道:
他们建议控制器只向控制器提供模型的副本,如果模型发生更改,控制器应填充事件,以便控制器请求更新模型的新副本
我不知道这是否算是一种不好的做法,我肯定不会这样做。正如你所提到的,Angular已经在管理模型更改时触发的事件,所以我同意你的看法,这是一件额外的不必要的事情,但我可能被证明是错的
以下是一些很好的指导原则,也许您可以在项目中使用它们: