我试图从我的服务中的API中获取一个计数器的值,然后在我的控制器内的该计数器上递增:
服务
angular.module('app')
.factory('MyService', MyService)
function MyService($http) {
var url = 'URL;
return {
fetchTotal: function(p) {
return $http.get(url, { params: p })
.then(function(response) {
var total = response.data.meta.total;
return total;
}, function(error) {
console.log("error occured");
})
},
incrementCounter: function(){
total++;
}
}
}
控制器
app.controller('Controller1', function ($scope, MyService) {
var params = {
...
}
MyService.fetchTotal(params).then(function(response) {
$scope.counter = response;
});
$scope.incrementCounter = function(){
MyService.incrementCounter();
}
});
查看
<div ng-controller="Controller1">
{{ counter }}
<span ng-click="incrementCounter()">increment</span>
</div>
我无法计算出我使用ng-click
从API返回的总数增量。这可能吗?
感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
Angularjs服务是单例,因此您可以创建变量并在控制器之间共享它。
请注意下面如何在服务中初始化变量ExecuteCommandList
。使用total
方法,相同的变量用于与控制器交互。
还要注意init()方法。您的控制器可以首先调用getCounter()
来初始化MyService.init
变量。
total
请参阅plunker for demo:http://plnkr.co/edit/idSxgm0axk43ydThTbJF?p=preview
答案 1 :(得分:0)
看起来你做的一切都是正确的,除了变量total
。
您应该在较高级别对其进行初始化,以便从incrementCounter
函数中看到它:
function MyService($http) {
var url = 'URL;
var total = 0;
return {
fetchTotal: function(p) {
return $http.get(url, { params: p })
.then(function(response) {
total = response.data.meta.total;
return total;
}, function(error) {
console.log("error occured");
})
},
incrementCounter: function(){
total++;
}
}
}
希望有所帮助