我有一个看起来像这样的控制器:
angular.module('my_app')
.controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
$scope.onSubmit = function() {
var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
console.log(json);
$scope.queries = json;
};
}
])
一个看起来像这样的观点:
<div ng-controller="QueryCtrl">
<form ng-submit="onSubmit()" >
<textarea ng-model="query_box" name="my_input"></textarea>
<button type="submit">Submit</button>
</form>
{{ queries }}
<ul ng-repeat="query in queries">
<li>{{query}}</li>
</ul>
</div>
问题在于,当我单击提交按钮时,javascript控制台成功记录了正确的json对象,该对象具有属性
responseJSON
您可以通过查找
来仔细查看我想要的对象$.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
自己进入javascript控制台并查看对象。
但是,在视图中,当我打印出“queries”对象时,它似乎没有responseJSON属性,只有readyState属性。
我的json对象的其余部分在哪里?
答案 0 :(得分:1)
var projectangular.module('my_app')
.controller('QueryCtrl', ['$scope', 'Query', function ($scope,$http, Query) {
$scope.onSubmit = function() {
$http.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(
//sucess
function(response){
angular.copy(response ,$scope.queries);
console.log(json);
},
//error
function(){
alert("cant post");
});
};
}
])
答案 1 :(得分:1)
尝试这样的事情:
$scope.onSubmit = function() {
var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' });
json.done(function(result){
$scope.result = result;
$scope.$apply();
})
console.log(json);
$scope.queries = json;
};
}
<div>{{result}}</div>
答案 2 :(得分:1)
正如CAT评论的那样,你从.post获得的是一个承诺对象。您必须等待发布请求完成(失败或成功)。以下语法可能很少。我只是在飞行中输入它。
angular.module('my_app').controller('QueryCtrl', ['$scope', 'Query', function ($scope, Query) {
$scope.onSubmit = function() {
var json = $.post('http://162.243.232.223:3000/api/query', { 'input': 'my_input' }).then(function(response){
console.log(response.data);
$scope.queries = response.data;
$scope.$apply();
}, function(response){
console.log(response.data);
$scope.queries = response.data;
$scope.$apply();
});
};
}])
答案 3 :(得分:0)
由于承诺系统以及如何在控制台中打印对象,它们是通过引用而不是按值打印的。尝试做一个字符串而不是对象的console.log(JSON.stringify(json)),你会发现你缺少responseJSON属性。您的responseJSON属性可能会在将来附加到该对象,但console.log(Object)将打印它的当前值,即使您在使用console.log后添加了该值。