使用AngularJS将复杂对象的JSON结果绑定

时间:2013-05-31 14:39:45

标签: angularjs angularjs-ng-repeat

鉴于此模块和控制器

angular.module('contactServices', ['ngResource']).
factory('ApiKey', function ($resource) {
    return $resource('/V1/apikeys', {}, {
        query: {method: 'GET', params: {}, isArray: false}
    });
});

function ContactCtrl($scope, ApiKey) {
    $scope.keys = ApiKey.query();
}

返回此数据

{ myObject: [{ id: "1", value: "Value1" }, { id: "2", value: "Value2" },    { id: "3", value: "Value3" }] }

到这个html元素

<select style="width:350px;" tabindex="2">
    <option ng-repeat="k in keys" value="{{k.id}}" >{{k.value}}</option>
</select>

当页面加载时,资源会抓取数据,但它返回一个promise,我从概念上理解它,并且可以看到它已经返回数据(在加载页面之后的时间),但是select永远不会加载。有一次,我使用了$ http服务,并且工作正常,但那是不久前的事情,如果可能,我真的很想使用资源抽象。

谢谢你, 斯蒂芬

更新

根据这里的评论是更新的工作示例。实际修复是抓取json对象并查找apiKeys对象。

<select ng-model="keys" ng-options="k.value for k in keys"></select>


function ContactCtrl($scope, ApiKey) {
    ApiKey.query({}, function (data) {
        $scope.keys = data.apiKeys; <<<<<<<<<<========= the fix
    });
}

1 个答案:

答案 0 :(得分:1)

在调用服务层时,可能应该尝试将代码更改为类似的内容。

    function ContactCtrl($scope, ApiKey) {
        ApiKey.query({}, function(data){
        $scope.keys = data;
      });
    }

卜哈斯卡瑞