0

HTML:

<div class="span10" ng-controller="GroupFieldsCntl" ng-init="init()">
    <div ng-repeat="field in fields"></div>
</div>

GroupFieldCntl:

function GroupFieldsCntl($scope) {
    $scope.fields = [];

    $scope.init = function() {
            // Get fields.
        $.get(ctx + 'admin/fields/fieldsJSON', function(data) {
            for(var i in data) {
                $scope.fields.push(data[i]);
            }
        });
    }
}

ajax 呼び出しは正しい応答を返すと確信していますが、html ページにはそれらのデータが表示されません。

4

2 に答える 2

0

ここのコメンターが言うように: 1. $.get の代わりに $http.get を使用します。これは Angular の Ajax であり、それを使用する必要があります。[コントローラーに注入する必要があります] 2. ループする場合var i in data、データ以外のプロパティのメソッドをループする可能性があるため、提案されているように、

for (var i in data) {
    if data.hasOwnProperty(i)
       //do something
    }
}

また、不正なデータで問題が発生しないと思われる場合は、常に次の構文を使用して、解決された promise (get リクエスト) を $scope 変数に解決することができます。

$scope.fields = $http.get(tx + 'admin/fields/fieldsJSON');

データが到着すると、解決後の JSON 応答がフィールドに自動的に含まれます。ただし、これはエラー応答を処理しないショートカットです。

于 2013-09-05T06:37:18.077 に答える
0

データに加えられた変更は、関数で行うangularか、他の関数で使用する場合にのみ、ビューの変更をトリガーし$applyます。したがって、コメントが示唆しているように、Angularの$httpサービスを使用するか、内部で関数を呼び出すことができます(すべきです) $apply

于 2013-09-05T06:44:24.107 に答える