将数据从 AngularJs Service 传递到 Controller 并将 Controller 传递到 Controller
Passing the data from AngularJs Service to Controller and Controller to Controller
目前我可以将 AngularJS 服务的值传递给 Angular 控制器,但是现在我在一个控制器中进行一些计算,现在我想将它传递给另一个控制器, 你能帮帮我吗
服务名称:detailService
控制器 1:FromService
控制器 2:BarCtrl
- 在下面的代码中,我从 detailService 获取值
来自服务控制器
- 并且在 FromService 控制器中,我正在评估数组的值
$scope.valuesSendToGraph
我想将这个 $scope.valuesSendToGraph 发送到 BarCtrl 控制器,你能帮我吗,如何解决这个问题
AngularJS代码
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]);
})
}
}
});
app.controller('FromService', function($scope, detailService) {
detailService.getInfo().then(function(data) {
$scope.newvalue = data;
$scope.releasename = data[0];
$scope.passCount = data[1];
$scope.failCount = data[2];
$scope.wipCount = data[3];
function sumValue(arr) {
var total = 0;
arr.forEach(function(element) {
total += element;
})
return total;
}
var sumPassCount = sumValue($scope.passCount);
var sumFailCount = sumValue($scope.failCount);
var sumWipCount = sumValue($scope.wipCount);
$scope.valuesSendToGraph = [sumPassCount, sumFailCount, sumWipCount];
console.log($scope.valuesSendToGraph);
$scope.fullArray = $scope.releasename.map(function(item, i) {
return {
releasename: item,
passCount: $scope.passCount[i],
failCount: $scope.failCount[i],
wipCount: $scope.wipCount[i]
}
});
console.log($scope.fullArray);
});
});
app.config(function(ChartJsProvider) {
// Configure all charts
ChartJsProvider.setOptions({
colors: ['#803690', '#00ADF9', '#DCDCDC', '#46BFBD', '#FDB45C', '#949FB1', '#4D5360'],
defaultFont: 'Ve'
});
// Configure all doughnut charts
ChartJsProvider.setOptions('doughnut', {
cutoutPercentage: 60
});
ChartJsProvider.setOptions('bubble', {
tooltips: {
enabled: false
}
});
});
app.controller('BarCtrl', function($scope) {
$scope.labels = ['Passed', 'Failed', 'WIP'];
$scope.series = ['Regression'];
$scope.data = [
$scope.valuesSendToGraph
];
});
I am doing some calculation in one controller and now I want to pass it to another controller
我强烈建议您将所有计算移至服务中。 Controller负责将数据与view绑定。
I wanted to send this $scope.valuesSendToGraph to BarCtrl Controller
由于Service是单例的,你可以将valuesSendToGraph
存储在服务中并从其他控制器加载它
如果您仍想从控制器向控制器发送 valuesSendToGraph
内容并且它们具有相同的级别,您可以在根级别上使用 $broadcast
,例如:
$rootScope.$broadcast('values', $scope.valuesSendToGraph);
在BarCtrl
调用:
$scope.$on('values', function(event, data) {
$scope.valuesSendToGraph = data;
});
确保在 $rootScope.$broadcast
之前调用 $scope.$on('values',
目前我可以将 AngularJS 服务的值传递给 Angular 控制器,但是现在我在一个控制器中进行一些计算,现在我想将它传递给另一个控制器, 你能帮帮我吗
服务名称:detailService
控制器 1:FromService
控制器 2:BarCtrl
- 在下面的代码中,我从 detailService 获取值 来自服务控制器
- 并且在 FromService 控制器中,我正在评估数组的值 $scope.valuesSendToGraph
我想将这个 $scope.valuesSendToGraph 发送到 BarCtrl 控制器,你能帮我吗,如何解决这个问题
AngularJS代码
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]);
})
}
}
});
app.controller('FromService', function($scope, detailService) {
detailService.getInfo().then(function(data) {
$scope.newvalue = data;
$scope.releasename = data[0];
$scope.passCount = data[1];
$scope.failCount = data[2];
$scope.wipCount = data[3];
function sumValue(arr) {
var total = 0;
arr.forEach(function(element) {
total += element;
})
return total;
}
var sumPassCount = sumValue($scope.passCount);
var sumFailCount = sumValue($scope.failCount);
var sumWipCount = sumValue($scope.wipCount);
$scope.valuesSendToGraph = [sumPassCount, sumFailCount, sumWipCount];
console.log($scope.valuesSendToGraph);
$scope.fullArray = $scope.releasename.map(function(item, i) {
return {
releasename: item,
passCount: $scope.passCount[i],
failCount: $scope.failCount[i],
wipCount: $scope.wipCount[i]
}
});
console.log($scope.fullArray);
});
});
app.config(function(ChartJsProvider) {
// Configure all charts
ChartJsProvider.setOptions({
colors: ['#803690', '#00ADF9', '#DCDCDC', '#46BFBD', '#FDB45C', '#949FB1', '#4D5360'],
defaultFont: 'Ve'
});
// Configure all doughnut charts
ChartJsProvider.setOptions('doughnut', {
cutoutPercentage: 60
});
ChartJsProvider.setOptions('bubble', {
tooltips: {
enabled: false
}
});
});
app.controller('BarCtrl', function($scope) {
$scope.labels = ['Passed', 'Failed', 'WIP'];
$scope.series = ['Regression'];
$scope.data = [
$scope.valuesSendToGraph
];
});
I am doing some calculation in one controller and now I want to pass it to another controller
我强烈建议您将所有计算移至服务中。 Controller负责将数据与view绑定。
I wanted to send this $scope.valuesSendToGraph to BarCtrl Controller
由于Service是单例的,你可以将valuesSendToGraph
存储在服务中并从其他控制器加载它
如果您仍想从控制器向控制器发送 valuesSendToGraph
内容并且它们具有相同的级别,您可以在根级别上使用 $broadcast
,例如:
$rootScope.$broadcast('values', $scope.valuesSendToGraph);
在BarCtrl
调用:
$scope.$on('values', function(event, data) {
$scope.valuesSendToGraph = data;
});
确保在 $rootScope.$broadcast
$scope.$on('values',