Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax AngularJS:$http成功回调_Ajax_Angularjs - Fatal编程技术网

Ajax AngularJS:$http成功回调

Ajax AngularJS:$http成功回调,ajax,angularjs,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 }; 我更喜欢在我的控制器中使

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

要在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.data
称为
data

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

{{item}}

因此,如果我想附加另一个元素,我应该已经创建了它,但不显示它,当我想显示它时,将ng show更改为true?我的AJAX调用完成了,好吗?因为它们看起来有点混乱如果你想有条件地向DOM中添加元素,那么你可以使用v1.1.5中可用的
ng if
指令。我觉得作为一种角度最佳实践,你应该在控制器中保留逻辑,指令中的DOM操作只有在需要时才依赖
ng if