在javascript中循环遍历角度js数组

时间:2014-11-25 14:08:39

标签: javascript angularjs asp.net-web-api angularjs-factory

我有一个web api,它将List<KeyValuePair<string, byte>>返回到角度js工厂。然后我使用 - &gt;在选择中呈现它

<select ng-model="survey.surveyType" class="form-control" id="surveyType">
                    <option ng-repeat="surveyType in surveyTypes" value="{{surveyType.value}}">{{surveyType.key}}</option>
                </select>

这很好用。角度循环并正确显示对象。在与web api方法交谈时,我已将其配置为这样 - &gt;

app.factory('Survey', ['$resource', function ($resource) {
return $resource('http://localhost:52133/api/surveyapi/:id', null,
    {
        'update': { method: 'PUT' },
        'getSurveyTypesAsDictionary': { method: 'GET', isArray: true, url: 'http://localhost:52133/api/surveyapi/GetSurveyTypesAsDictionary' }
    });
}]);

// fetching the values in my controller
var surveyTypes = Survey.getSurveyTypesAsDictionary();

现在我的问题是这个。我无法循环结果。在控制台中,对象看起来像这样 - &gt;

enter image description here

但是如果我试图在我的角度数组中得到值,那里什么都没有。例如surveyTypes.length为0。

问题。如何使用JavaScript消耗数组? 谢谢!

编辑: 我试图仅从网络API返回Dictionary<string, byte>,但我根本没有让它工作。

编辑,评论Sergiu:

var promise = Survey.getSurveyTypesAsDictionary();
promise.$promise.then(function (response) {
    console.log(response.length);
});

要使你的建议有效,我必须从对象中获取$promise。这是正确的还是我需要配置我的工厂以使其按照语法编写的方式工作?

1 个答案:

答案 0 :(得分:4)

首先,返回的resource object具有提供高级行为的操作方法,而无需与低级$http服务进行交互。

例如

Post.query(function(data) {
    $scope.posts = data;
});

或者,您还可以通过返回对象上的$http属性访问原始$promise承诺

 var req = Post.query().$promise;
 req.then(function(data) { 
     $scope.posts = data;
 });