如何在ng-repeat中使用jquery.ajax返回的数据?

时间:2016-08-08 08:20:23

标签: jquery angularjs ajax angularjs-ng-repeat

这是我的jquery ajax调用

jQuery.ajax({
            url: view_url+"get_messagekinds",
            success: function (result) {
                $scope.response = result;
            },
            async: false
        });

这里是html代码:

<select id="select_msg_kind"
                    name="select_msg_kind"
                    class="form-control"
                    ng-model="message_kind_selected" style="height:30px;width:220px">
                    <option value="0">--Select Message Kind--</option>
                    <option ng-repeat="res in response track by $index" value="{{ res.id }}">
                        {{ res.name }}
                    </option>
                </select>

但是选择列表为空。这是截图

enter image description here

如何使用ng-repeat?

填充ajax调用返回的数据的选择列表

以下是ajax调用返回的数据:

[{"id": 1, "name": "Test1"}, {"id": 2, "name": "test2"}, {"id": 3, "name": "Test3"}]

1 个答案:

答案 0 :(得分:0)

提示:请勿使用jQuery.ajax,而应使用有角度的$http服务。后者会注意到所谓的“消化周期”的角度。应该运行:

$http.get(url).then(function(result) {
    // success
    $scope.response = result;
}, function() {
    // error
});

如果你真的想使用jquery的ajax(我认为你的理由是因为你使用async: false),你应该自己触发摘要周期:

jQuery.ajax({
    url: view_url+"get_messagekinds",
    success: function (result) {
        // trigger digest cycle with '$apply'
        $scope.$apply(function() {
            $scope.response = result;
        });
    },
    async: false
});

但是你不应该使用async,你可以使用$http服务的promises和回调函数。