Ajax AngularJS:$http成功回调
我有点困惑如何实现从成功的AJAX调用到RESTful服务器的回调。以下是我获取数据的方式: 服务: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 }; 我更喜欢在我的控制器中使
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
。