我正在尝试使用工厂在angularjs中的控制器之间共享数据。我已经按照其他类似问题的答案,但我只能在第一轮工作。我有一个有3个州的应用程序。其中一个州是一个简单的计算器。我希望计算器状态中的总数也以不同的状态显示。使用下面的代码,总数总是显示为0.所以我认为它第一轮工作,但不会更新总和'改变了。有人有什么建议??
HTML:
<div class="list card">
<div class="item item-divider">Total</div>
<div class="item item-body">
<div ng-model="figure">
<b>{{figure}}</b> calories consumed today
</div>
</div>
</div>
&#39;家&#39;控制器:
.controller('homeCtrl', function($scope, total) {
$scope.figure = total.get();
})
计算器控制器:
.controller('calcCtrl', function($scope, total) {
$scope.result = 0;
$scope.reset = function() {
$scope.result = 0;
};
$scope.add = function(i) {
if(!i){
}else {
$scope.result = $scope.result + parseInt(i);
total.set($scope.result);
}
};
});
工厂
.factory('total', function() {
var val = 0;
return {
get: function() {
return val;
},
set: function(num) {
val = parseInt(num);
}
};
})
答案 0 :(得分:2)
如果使用对象存储值,它会更好。
var data = {val : 0};
return {
get: function() {
return data;
},
set: function(num) {
data.val = parseInt(num);
}
};
或者您总是调用get()函数来获取最新值
.controller('homeCtrl', function($scope, total) {
$scope.figure = total.get;
})
并在HTML中
<b>{{figure()}}</b>