1

成功した AJAX 呼び出しから RESTful サーバーへのコールバックを実装する方法が少しわかりません。これは私がデータを取得する方法です:

サービス:

app.factory('Data', function($http) {
    var factory = {};

    factory.get = function(id, success, error) {
        $http.post("/api/"+id).success(success);

    return factory
    };

コントローラーで使用する自己定義関数 (factory.get() など) を使用することを好みます。

コントローラ:

app.controller('Ctrl', function($scope, Data) {

    var onSuccess = function(data, status) {
       // I want to append something to the DOM here
       }
    };

    $scope.get = function(id) {
       Data.get(id, onSuccess)
    };
});

ここでは、HTML で使用できる get 関数を定義しています。ID を渡す必要があります。ただし、要素にアクセスする方法がわからないため、JSON 応答からの情報を onSuccess 関数の DOM に追加できます。

これを達成するためにディレクティブを作成する必要がありますか? これは AJAX 呼び出しを行う正しい方法ですか?

4

1 に答える 1

3

サーバーの応答が DOM 内でアクセスできるようにするには、コントローラーのスコープ内にある必要があります。これを行うには、返されたデータを成功コールバック内の $scope 変数に割り当てます。

app.controller('Ctrl', function($scope, Data) {
    $scope.get = function(id) {
        Data.get(id).success(function(data, status) {
            $scope.status = status;
            $scope.data = data;
        });
    };
});

これで、HTML 内で単に$scope.dataasを参照できるようになりました。data

<div ng-repeat="item in data">
    {{item}}
</div>
于 2013-08-16T11:38:36.127 に答える