在AngularJS中,可以使用$http来更新服务中的共享数据。 可以在服务中定义一个函数,使用$http发送请求到服务器并获取数据。然后,可以将这些数据存储在服务中的共享变量中。 以下是一个示例代码: ```javascript app.service('DataService', function($http) { var sharedData = {}; this.getData = function() { return $http.get('/api/data').
在AngularJS中,可以使用$http来更新服务中的共享数据。 可以在服务中定义一个函数,使用$http发送请求到服务器并获取数据。然后,可以将这些数据存储在服务中的共享变量中。 以下是一个示例代码: ```javascript app.service('DataService', function($http) { var sharedData = {}; this.getData = function() { return $http.get('/api/data').
请查看此Plunker。我有一个myApp.common.sharedata
模块用于在myApp.interactive.layout.menu
和myApp.interactive.layout.chart
之间共享数据。
如果您在menu
模块中点击复选框,它将调用服务sharedata.check(key);
来更新共享数据。
在common/sharedata/sharedata.service.js
中的sharedata.check
函数中,我使用sharedata.series = response.data.data;
来更新来自$http的数据,但它不起作用。数据未同步到模块myApp.interactive.layout.menu
和myApp.interactive.layout.chart
。我还尝试了sharedata.series = angular.copy(response.data.data);
,但它也不起作用。我不得不使用以下代码:
for(var i=0; i
有什么建议吗?我的最终目标是使用$http在模块
myApp.common.sharedata
中初始化共享数据。现在我正在使用静态代码。如果我使用以下代码:$http.get("https://reqres.in/api/users") .then(function(response) { sharedata.series = (response.data.data); });
数据也没有同步到模块
myApp.interactive.layout.menu
和myApp.interactive.layout.chart
。
AngularJS中的服务(Service)是用来共享数据的一种方式。在这个问题中,我们想要通过$http请求更新一个在服务中共享的数据。下面是具体的问题和解决方法。
问题出现的原因是,在代码中使用了一个服务来共享数据,但是在更新数据之后,视图并没有更新。这是因为在AngularJS中,当数据发生变化时,需要手动通知视图进行更新。
解决方法是使用$scope.$watch来监测数据的变化,并在变化时触发相应的操作。在这个问题中,我们将$scope.menuSeries设置为sharedata服务中的数据,并使用$scope.$watch来监测menuSeries的变化。当menuSeries发生变化时,我们可以在控制台打印出新的值。
具体的代码修改如下:
'use strict'; angular.module('myApp.interactive.layout.chart', ['myApp.common.sharedata']) .controller('InteractiveChartCtrl', ['$scope', 'sharedata',function($scope,sharedata) { $scope.menuSeries = sharedata; //MODIFIED HERE $scope.$watch('menuSeries', function(newValue, oldValue) { console.log('menuSeries changed'); console.log(newValue); },true); }]);
此外,还需要修改chart.html文件中的代码,将ng-repeat指令中的数据源改为menuSeries.series。
具体的代码修改如下:
{{menuSeries}}
通过以上的修改,我们解决了数据更新后视图不更新的问题。
希望以上的解决方法能对你有所帮助!