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 回答