我有一个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;
但是如果我试图在我的角度数组中得到值,那里什么都没有。例如surveyTypes.length
为0。
问题。如何使用JavaScript消耗数组? 谢谢!
编辑:
我试图仅从网络API返回Dictionary<string, byte>
,但我根本没有让它工作。
编辑,评论Sergiu:
var promise = Survey.getSurveyTypesAsDictionary();
promise.$promise.then(function (response) {
console.log(response.length);
});
要使你的建议有效,我必须从对象中获取$promise
。这是正确的还是我需要配置我的工厂以使其按照语法编写的方式工作?
答案 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;
});