gpt4 book ai didi

javascript - Angularjs:一个在 Controller 之间共享数据的工厂

转载 作者:行者123 更新时间:2023-11-30 10:15:37 25 4
gpt4 key购买 nike

我有一个带有多个 View 的 angular.js 应用程序,我需要在 View 更改时保留状态。
所以我用一个非常简单的工厂来共享数据。
而且,在 Controller 中,我使用工厂名称来使用我的数据,而不是“$scope”:

app.factory('share', function() {
return {};
}

app.controller('FirstCtrl', function ($scope, share) {
share.obj1['a'] = 'ABC';
});

app.controller('SecondCtrl', function ($scope, share) {
share.obj1['b'] = 'DEF';
if (share.obj1['a'] === 'ABC') {
...
}
});

而且,我的简化 html View 是这样的:

...
<div ng-repeat="(key, item) in obj1">
{{item}}
</div>
...

这当然行不通,因为 View 中的 ng-* 指令只能访问 $scope...

是否可以使用 $scope 使我的数据与共享工厂保持同步?

最佳答案

您可以在每个 Controller 的末尾执行 $scope.share = share,当然还可以修改 View :

<div ng-repeat="(key, item) in share.obj1">

或者,如果 share 的结构不会改变(总是有一个 obj1),你可以做 angular.extend($scope, share).如果 share 获取新属性,这是危险的,这些属性将不会被作用域看到,直到创建新的 Controller 。

关于javascript - Angularjs:一个在 Controller 之间共享数据的工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885285/

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