AngularJS:$ http成功回调

时间:2013-08-16 11:32:45

标签: ajax angularjs

我有点困惑如何实现从成功的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调用的正确方法吗?

1 个答案:

答案 0 :(得分: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.datadata

<div ng-repeat="item in data">
    {{item}}
</div>