我有一个角度服务如下所示:
.service('shareDataService', function() {
var myXi = [];
var myYi = [];
var addXi = function(newObj) {
myXi = newObj;
}
var addYi = function(newObj) {
myYi = newObj;
}
var getPlot = function() {
var a = [];
for (var i = 0; i < myXi.length; i++) {
a.push([myXi[i], myYi[i]]);
}
return a;
}
return {
addXi: addXi,
addYi: addYi,
getPlot: getPlot
};
});
我有角度控制器:
.controller('plotController', function($scope, shareDataService) {
$scope.getYo = function() {
return shareDataService.getPlot();
};
$scope.lineChartData = [
$scope.getYo()
];
});
我需要将$ scope.getYo中的值发送到$ scope.lineChartData(它将是和数组)。我怎样才能做到这一点?我已经尝试过了,但是如果我在HTML中调用$ scope.lineChartData,我什么也得不到。 我需要的数据是
[
[
[2,0],
[3,1],
[5,4]
]
];
更新:
请参阅http://laravel.io/bin/6LVej中的完整说明。感谢
答案 0 :(得分:8)
我们知道工厂和服务基本上用于共享数据。但两者都有不同的用途和含义。基本的区别是Factory应该总是返回Object,Service应该返回Function(JS中的构造函数)。以下是可能对您的案例有所帮助的代码段。
var app = angular.module('plunker', []);
app.service('arrayService', function() {
return function() {
this.getArray = function() {
return [1, 2, 3, 4, 5];
}
}
})
app.factory('arrayFactory', function() {
return {
getArray : function() {
return [9,8,7,6,5];
}
}
})
app.controller('MainCtrl', ['$scope','arrayService','arrayFactory',
function($scope, arrayService,arrayFactory) {
var ary = new arrayService();
$scope.serviceArrayObject = ary.getArray();
$scope.factoryArrayObject = arrayFactory.getArray()
}
]);
Here is the plunker for basic difference 我们如何使用服务和工厂
答案 1 :(得分:2)
尝试以下代码
.controller('plotController', function($scope, shareDataService) {
$scope.lineChartData =shareDataService.getPlot();
});
答案 2 :(得分:0)
由于getYo
返回一个数组,您可以直接将其返回值分配给lineChartData
:
$scope.lineChartData = $scope.getYo();
答案 3 :(得分:0)
此shareDataService.getPlot();
返回数组对象,因此您可以直接将其调用$scope.lineChartData
。
试试这个
.controller('plotController', function($scope, shareDataService) {
$scope.lineChartData = shareDataService.getPlot();
});
您不需要编写此代码
$scope.getYo = function() {
return shareDataService.getPlot();
};