我有点困惑如何实现从成功的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调用的正确方法吗?
答案 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.data
为data
:
<div ng-repeat="item in data">
{{item}}
</div>