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これで、コード内に 2 行がコメント化されました。uncommentこれらの 2 行を入力すると、データが問題なく入力されます。しかし、現在起こっているように、ajaxリクエストコードを使用してデータを入力しようとするたびに。それは動作しません。何が問題なのですか?

4

1 に答える 1

2

AJAX コールバックは Angular の「外部」で実行されるため、スコープ プロパティを変更している場合でも、次のようになります。

$scope.unis.push(unii);

Angular はこれらの変更を認識しません。ループ$scope.$apply()後に呼び出します。forこれにより、Angular はダイジェスト サイクルを実行し、変更を認識してビューを更新します。

于 2013-05-10T17:40:57.123 に答える