gpt4 book ai didi

angularjs - 从 AngularJS 中的服务刷新数据的最佳(惯用)方法

转载 作者:行者123 更新时间:2023-12-04 20:10:31 24 4
gpt4 key购买 nike

我正面临 AngularJS、服务和范围的“问题”。

这不是一个真正的问题(我找到了几种使其工作的方法),但我想知道我是否在做正确的事情,或者我正在做的事情是否会导致将来出现问题

我有一个保存一些全局数据的服务;该服务有两种方法:
获取数据()
刷新数据()

refreshData 触发一些工作(休息调用等),它在不同 Controller 内的精确点被调用,以响应用户操作(按钮点击等)。

getData(显然)被调用来取回数据。

在 Controller 中,我应该如何使用它来访问数据并将其放入范围内,以便可以从 View 中访问它?

备选方案 1:

controller('MyController', function ($scope, myService) {   
$scope.data = myService.getData();
//use data in functions and in the view, ex: ng-hide="data.forbidden"

备选方案 2:
controller('MyController', function ($scope, myService) {   
$scope.data = function() { return myService.getData(); }
//use data() in functions and in the view, ex: ng-hide="data().forbidden"

备选方案 3:
controller('MyController', function ($scope, myService) {   
$scope.forbidden = function() { return myService.getData().forbidden; }
//... one function for each data.member used in this view
//usage in the view: ng-hide="forbidden()"

备选方案 4:使用 $apply 或 $watch

我目前正在使用第二种方法,因为即使没有创建新 Controller 它也能工作(想想同一页面中的不同部分,使用不同的 Controller )。

有什么意义吗?或者有更好的方法吗?

最佳答案

这取决于使用情况。当您想在加载页面或初始化 Controller 时填充数据时,可以使用替代方案 1 或 3。当您希望通过单击按钮或其他一些操作来触发数据刷新时,可以使用备选方案 2。当您希望数据加载由其他数据模型上的数据更改驱动时,可以使用替代方案 4。所以我认为你发布的每一个替代方案在正确的场景中都是有意义的。

关于angularjs - 从 AngularJS 中的服务刷新数据的最佳(惯用)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882560/

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