这是我第一次实施工厂,它看起来像是一个非常小的东西,但我似乎无法确定它可能是什么。
我的工厂代码是:
angular.module('dashboardApp').factory('randomNumberService', function($http) {
var num, min, max, col, base, format, md, myData;
var numbersArray = [];
var newArrayTwo = [
[],
[]
];
var getRandom = {
myNumbers: []
};
getRandom.numbers = function() {
$http({
method: 'GET',
url: 'https://www.random.org/integers/',
params: { num: 14, min: 9, max: 80, col: 1, base: 10, format: 'plain', md: 'new' }
}).success(function(response, data, status, config) {
numbersArray = response.split(response.charAt(2));
console.log(numbersArray[0]);
angular.copy(numbersArray, getRandom.myNumbers);
}).error(function(data, status) {
//error code here
});
}
return getRandom;
});
我从我的控制器调用它:
randomNumberService.numbers();
var myData = randomNumberService.myNumbers;
基本上当我在console.log中的数组(myData)时,它会显示我必须展开的括号以查看数组。当我将鼠标悬停在它上面时,它有点我说"左边的对象值在记录时被快照了#34;当我尝试console.log myData [0]时,它表示未定义。当它向我显示没有索引的整个数组时,它怎么能被定义?
答案 0 :(得分:0)
看起来你做得很好。
如果要在页面上查看结果,请先将值放在范围
上$scope.myData = randomNumberService.myNumbers;
在html中:
<pre>{{myData | json}}</pre>
查看页面上显示的内容
答案 1 :(得分:0)
你可以在工厂做得更好: 例如,使用$ q:
angular.module('dashboardApp')
.factory('randomNumberService', function($http, $q) {
var num, min, max, col, base, format, md, myData;
var numbersArray = [];
var newArrayTwo = [[],[]];
return {
getNumbers: function(){
var defer = $q.defer();
$http({
method: 'GET',
url: 'https://www.random.org/integers/',
params: { num: 14, min: 9, max: 80, col: 1, base: 10, format: 'plain', md: 'new' }
})
.success(function(response, data, status, config) {
numbersArray = response.split(response.charAt(2));
defer.resolve(numbersArray);
}).error(function(data, status) {
defer.reject();
});
return defer.promise;
}
}
在你的控制器中:
randomNumberService.getNumbers()
.then( function(data){
$scope.myData = data;
});