【问题标题】:angularJs loop not working in controllerangularJs循环在控制器中不起作用
【发布时间】:2016-01-03 12:43:08
【问题描述】:

我不能在我的控制器上使用循环并且没有错误 这是我的代码

'use strict';

var chartApp = angular.module('chartsApp');

chartApp.controller('chartController', ['$scope', 'ChartingService', function($scope, ChartingService){

var charts = ChartingService.query();
console.log(charts);

for (var i = 0; i < charts.length; i++) {
    console.log(charts[i]);
};


console.log('after');

}]);

这是从 api 获取数据的原因

var app = angular.module('chartsApp');

app.factory('ChartingService', function($resource) {
return $resource('/api/sales', {
    id: '@id'
}, {
    add: {method: 'POST'}

});
});

我没有收到任何错误,但循环无法正常工作 当我控制台记录 var 图表时,它在控制台窗口上打印所有数据

这就是我在控制台中得到的内容

有什么帮助吗?

【问题讨论】:

    标签: angularjs controller factory


    【解决方案1】:

    documentation of $resource 说:

    重要的是要意识到调用 $resource 对象方法会立即返回一个 empty 引用(对象或数组取决于 isArray)。从服务器返回数据后,现有引用将填充实际数据。

    (强调我的)

    然后是一个例子,它使用回调函数来获取query()返回的数组的第一个元素,一旦可用

    【讨论】:

    • 这家伙说的是实话。 :) 你应该真正了解 javascript 承诺是如何工作的。显然,当您尝试使用 for 循环遍历它时,您没有数据......但稍后它会。所以这就是为什么你可以用你的控制台看到它。
    • 好的,但是为什么在控制台打印数据却不能循环数据?
    • 控制台打印什么?
    • 图表数据的所有数据数组
    • 我对此表示怀疑。编辑您的问题,并添加确切控制台中打印的内容。逐字逐句。
    猜你喜欢
    • 2019-05-13
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多