0

我正在尝试动态填充 ListBox。但它不适用于 ajax 请求。

这就是我正在做的事情。

我的 Ajax 请求:

angular.module("confessions_module").factory("Universities",function(){

    var service = {};

        service.getUniversitiesAjax=function(callback)
        {
            $.ajax({
                type:'GET',
                url:'myurl',
                success:function(e)
                {
                    universitiesList = $.parseJSON(e);
                    callback(universitiesList);
                }

            });

//                var a = [{ 'name':'asdasdsad','id':123},{ 'name':'mozi','id':123}];
 //              callback(a)
        }
    return service;
});

我的控制器调用函数并填充数组:

   Universities.getUniversitiesAjax(
    function(university)
    {

        for(var i=0;i<university.length;i++)
        {
            var unii = { 'name' : university[i].name , 'id' : university[i].id };
            $scope.unis.push(unii);
        }
    }
);

我的观点:

                   <select id="dd_universities">
                        <option ng-repeat="uni in unis">{{uni.name}}</option>
                    </select>

现在代码中有两行注释My Ajax Request。当我使用uncomment这两行时,我的数据会毫无问题地填充。但是每当我尝试使用 ajax 请求代码填充它时,就像现在发生的那样。这没用。可能是什么问题呢 ?

4

1 回答 1

2

您的 AJAX 回调在 Angular 的“外部”执行,因此即使您正在更改范围属性:

$scope.unis.push(unii);

Angular 不会注意到这些变化。$scope.$apply()在你的for循环之后调用。这将导致 Angular 运行一个摘要循环,它会注意到您的更改并更新您的视图。

于 2013-05-10T17:40:57.123 回答