gpt4 book ai didi

angularjs - Angular 应用程序中的哪个位置是存储 "shared"数据的好地方

转载 作者:行者123 更新时间:2023-12-02 03:21:11 25 4
gpt4 key购买 nike

这是对我的“Is it bad practice for an angular directive to request data”问题的跟进。

我的问题是什么地方适合保存应用程序数据?例如 - 有关当前用户的信息,例如他的姓名和他在应用中的 Angular 色?

不同的区域(在屏幕上)和组件将取决于此数据(例如 - 边栏将想知道 curentUser.isAnAdminhelloUser 指令是否会想知道currentUser.name

这是否意味着 currentUser 应该放在 $rootScope 上?检索 currentUser 的初始数据和刷新此信息的触发器应该是什么?

我曾考虑让多个 ngController 负责在与 ngApp 相同的 html 节点范围内设置此数据,但发现不可能有多个 <单个 HTML 项目上的 em>ngController。

我现在正在考虑拥有多个服务,这些服务的方法可以获取范围对象并将它们负责的数据分配到该范围。 它将允许我将 currentUser 的代码与 someOtherSharedAppData 的代码分开到两个不同的服务中,并从应用程序的主 Controller 中调用它们,从而将数据分配给关联的范围应用中最顶层的元素 - 这有意义吗?

最佳答案

事实上你在这里问了两个问题:

  1. 在哪里存储和操作数据?
  2. 我应该何时以及如何使用 $rootScope(与 $scope 相比)?

1)我会引用this article :例如,每当数据和方法需要可重用时,我都会编写这样的服务。

angular.module('modelDemo').service("myModel", [function() {
this.list = [what, ever, items, you, have];

this.property= null;
this.setProperty = function(value) {
this.property= value;
};
}]);

请注意,我没有像您考虑的那样传递 $scope。相反,我会在我的 Controller 中注入(inject)服务并像这样绑定(bind) $scope 变量:

$scope.list = myModel.list;

如果需要,您甚至可以绑定(bind)到完整模型

$scope.myModel = myModel;
myModel.setPropery(value)

明白了吗?这样所有模型更改将直接可用于相应的 View

{{myModel.property}}
ng-repeat="item in myModel.list"
ng-click="myModel.setProperty(item)"

结论:是的,您应该为您的用户模型和您的 someOtherSharedAppData 模型提供不同的服务。

2)我会引用这个SO Question .简而言之:如果您有应该在多个 View 中可用的数据,则可以将您的(服务)模型绑定(bind)到 $rootScope 变量。正如您在上述讨论中看到的那样,还有其他意见,但我认为结论是:这取决于应用程序的结构和需求。

关于angularjs - Angular 应用程序中的哪个位置是存储 "shared"数据的好地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276688/

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