Javascript 将数据从AngularJs服务传递给控制器,并将控制器传递给控制器
目前我可以将值从AngularJS服务传递到AngularController,但现在我正在一个控制器中进行一些计算,现在我想将其传递到另一个控制器,您能帮助我吗Javascript 将数据从AngularJs服务传递给控制器,并将控制器传递给控制器,javascript,angularjs,angular-services,angular-controller,Javascript,Angularjs,Angular Services,Angular Controller,目前我可以将值从AngularJS服务传递到AngularController,但现在我正在一个控制器中进行一些计算,现在我想将其传递到另一个控制器,您能帮助我吗 服务名称:detailService 控制器1:FromService 控制器2:BarCtrl 在下面的代码中,我将从detailService获取值 来自服务控制器 在FromService控制器中,我正在评估数组的值 $scope.valuesSendToGraph 我想把这个$scope.valuesSendToGraph
- 服务名称:detailService
- 控制器1:FromService
- 控制器2:BarCtrl
- 在下面的代码中,我将从detailService获取值 来自服务控制器
- 在FromService控制器中,我正在评估数组的值 $scope.valuesSendToGraph
var app = angular.module('myApp', ["chart.js"]);
app.service('detailService', function($http, $filter, $q) {
return {
getInfo: function() {
return $http({
method: 'POST',
url: 'myjson.json'
}).then(function(response) {
msoResponseArray = response.data;
var passByCompanyArray = [];
var failByCompanyArray = [];
var wipByCompanyArray = [];
var releasenameArray = [];
var totalCountArray = [];
var fullArray = [];
msoResponseArray.forEach(function(item) {
releasenameArray.push(item.executions[0].cycleName);
});
msoResponseArray.forEach(function(item) {
/* Filtering the Items Which are Passed*/
passByCompany = $filter('filter')(item.executions, function(
inputs) {
if ((inputs.executedBy == 'a' || inputs.executedBy == 'b' || inputs.executedBy == 'c' || inputs.executedBy == 'd') && inputs.executionStatus == '1') return inputs;
});
passByCompanyArray.push(passByCompany.length);
//passByCompanyArray.unshift(item.executions[0].cycleName);
failByCompany = $filter('filter')(item.executions, function(
inputs) {
if ((inputs.executedBy == 'a' || inputs.executedBy == 'b' || inputs.executedBy == 'c' || inputs.executedBy == 'd') && inputs.executionStatus == '2') return inputs;
});
failByCompanyArray.push(failByCompany.length);
//failByCompanyArray.unshift(item.executions[0].cycleName);
wipByCompany = $filter('filter')(item.executions, function(
inputs) {
if ((inputs.executedBy == 'a' || inputs.executedBy == 'b' || inputs.executedBy == 'c' || inputs.executedBy == 'd') && inputs.executionStatus == '3') return inputs;
});
wipByCompanyArray.push(wipByCompany.length);
//wipByCompanyArray.unshift(item.executions[0].cycleName);
});
return $q.when([releasenameArray, passByCompanyArray, failByCompanyArray, wipByCompanyArray]);
})
}
}
});
我正在一个控制器中进行一些计算,现在我想将其传递给另一个控制器
我强烈建议您将所有计算移至服务。控制器负责将数据与视图绑定
我想把这个$scope.valuesSendToGraph发送到BarCtrl控制器
由于服务是单例的,所以您可以在服务中存储valuesSendToGraph
,并从其他控制器加载它
如果您仍然希望将
值Sendtograph
内容从一个控制器发送到另一个控制器,并且它们具有相同的级别,则可以在根级别上使用$broadcast
,例如:
$rootScope.$broadcast('values', $scope.valuesSendToGraph);
在BarCtrl
中调用:
$scope.$on('values', function(event, data) {
$scope.valuesSendToGraph = data;
});
确保在$rootScope.$broadcast
我正在一个控制器中进行一些计算,现在我想将其传递给另一个控制器
我强烈建议您将所有计算转移到服务。控制器负责将数据与视图绑定
我想把这个$scope.valuesSendToGraph发送到BarCtrl控制器
由于服务是单例的,所以您可以在服务中存储valuesSendToGraph
,并从其他控制器加载它
如果您仍然希望将
值Sendtograph
内容从一个控制器发送到另一个控制器,并且它们具有相同的级别,则可以在根级别上使用$broadcast
,例如:
$rootScope.$broadcast('values', $scope.valuesSendToGraph);
在BarCtrl
中调用:
$scope.$on('values', function(event, data) {
$scope.valuesSendToGraph = data;
});
确保在上调用
$scope.$('values',
before$rootScope.$broadcast
这两个控制器是如何在DOM上排列的?它们是在父元素和子元素上还是在兄弟元素上?它们在不同的分区中?这两个控制器是如何在DOM上排列的?它们是在父元素和子元素上还是在兄弟元素上?它们在dif中ferent Div感谢Maxim,我将尝试使用您所说的最佳方法,我将尝试仅使用逻辑。现在,如果我想派生数组,我是否必须在服务中创建单独的函数感谢Maxim,我将尝试使用您所说的最佳方法,我将尝试仅使用逻辑。现在,如果我想派生arr是的,我必须在服务中创建单独的功能吗
$scope.$on('values', function(event, data) {
$scope.valuesSendToGraph = data;
});