我可以在控制台中看到我的json数据,我想在click按钮功能之后在html页面上查看它。根据我的不足,我可以做一个承诺($ q),或者然后使用http或ngResource。首先我想做http然后迁移到ngResource。由于某种原因,我的范围仍未定义。也许这是一个ng-init或ng-repeat我不见了?有什么想法吗?
var app = angular.module('myApp', []);
app.factory('httpq', function($http, $q) {
return {
get: function() {
var deferred = $q.defer();
$http.get.apply(null, arguments)
.success(deferred.resolve)
.error(deferred.resolve);
return deferred.promise;
}
}
});
app.controller('myController', function($scope, httpq) {
httpq.get('http://localhost:8080/states')
.then(function(data) {
$scope.returnedData = data;
})
$scope.clickButton = function() {
$scope.returnedData;
}
});
查看
<div data-ng-controller="myController">
<button data-ng-click="clickButton()">Get Data From Server</button>
<p>JSON Data : {{returnedData}}</p>
</div>
答案 0 :(得分:2)
使用Ajax调用
<强>服务强>:
的
的var demoService = angular.module('demoService', [])
.service('myService',['$http', function($http) {
this.getdata = function(entity){
var promise = $http({
method : 'POST',
url : 'services/entity/add',
data : entity,
headers : {
'Content-Type' : 'application/json'
},
cache : false
}).then(function (response) {
return response;
});
return promise;
};
}]);
的
控制器:
var demoService = angular.module('demoService', [])
.controller('myctr',['$scope','myService',function($scope,myService){
myService.getdata().then(function(response){
//Success
},function(response){
//Error
});
}]);
的
现在您可以在控制器成功
中看到您的json答案 1 :(得分:1)
$ http本身是一个承诺,不需要创建新的承诺。只需返回$ http.get wihoit写入那里的成功,并在控制器本身中找到成功的fn。所以你的代码看起来像这样:
app.factory('httpq', function($http) {
return {
get: function() {
return $http.get.apply(null, arguments);
}
}
});
你的控制器:
app.controller('myController', function($scope, httpq) {
httpq.get('http://localhost:8080/states').then(function(data) {
$scope.returnedData = data;
})
$scope.clickButton = function() {
$scope.returnedData;
}
});
答案 2 :(得分:0)
使用
$scope.returnedData=JSON.parse(data);
它将以JSON格式提供值
答案 3 :(得分:0)
我没有使用 promise 。但是你的工厂代码似乎没问题。
在控制器中首先声明你的对象。
如果只是对象将其声明为
$scope.returnedData = {};
如果是数组,请将其声明为
$scope.returnedData = [];
对象不会被定义,更改将影响HTML