Angularjs 在角度控制器中共享小计
我正在尝试将一个控制器中计算的小计与另一个控制器共享。当我使用下面的代码时,我得到一个Angularjs 在角度控制器中共享小计,angularjs,Angularjs,我正在尝试将一个控制器中计算的小计与另一个控制器共享。当我使用下面的代码时,我得到一个总计未定义的错误 我真的很感激关于如何使这项工作正常进行的建议 我用Stackoverflow post作为模型 .factory('serviceA', function() { var serviceA = { amount: null }; return serviceA; }) .controller('ProjectListCtrl', function ($scope, se
总计未定义的错误
我真的很感激关于如何使这项工作正常进行的建议
我用Stackoverflow post作为模型
.factory('serviceA', function() {
var serviceA = {
amount: null
};
return serviceA;
})
.controller('ProjectListCtrl', function ($scope, serviceA, Projects) {
var projectList = this;
projectList.projects = Projects;
serviceA.amount = total;
projectList.total = function () {
var total = 0;
angular.forEach(projectList.projects, function (project) {
total += project.type.cost;
});
return total; //want to use this total in other controller
};
})
.controller('PaymentFormCtrl',
function ($scope, $http, serviceA) {
$scope.serviceA = serviceA;
console.log(serviceA);
// . . .
});
在这种情况下,您可能希望使用服务,因为服务是单例的,这意味着将只创建一个服务,并且每个控制器将使用相同的服务,而不是使用它们自己的工厂
.service('serviceA', function() {
var amount = 0;
return {
get: function () {
return amount;
},
set: function (value) {
amount = value;
}
};
});
在第一个控制器中,您希望在projectList.total函数中而不是在其外部分配serviceA中的金额
.controller('ProjectListCtrl', function ($scope, serviceA, Projects) {
var projectList = this;
projectList.projects = Projects;
projectList.total = function () {
var total = 0;
angular.forEach(projectList.projects, function (project) {
total += project.type.cost;
serviceA.set(total);
});
//return total; //want to use this total in other controller
};
})
此外,serviceA是一个服务,因此您可以将其作为对象使用,而不是将其分配给变量
.controller('PaymentFormCtrl',
function ($scope, $http, serviceA) {
var total = serviceA.get();
console.log(total);
});
谢谢你。然而,出于某种原因,这种解决方案对我不起作用console.log(serviceA)
显示您需要console.log(serviceA.get())