我正在研究angularJS中的一个项目,我正在改变我们的系统如何工作一点点,但无论出于何种原因,新的返回没有以角度显示。 这是我的html看起来像..
<button ng-repeat="company in companies" ng-click="setCompany(company)">
{{ company.name }}
</button>
此外,这是我的js文件中的一段代码。
$.post( "/turnup/index.php/app/companies_near", data,
function(response)
{
$scope.companies = JSON.parse(response);
console.log($scope.companies);
} );
但无论出于何种原因,它都没有打印出具有以下结构的对象..
[Object]
0: Object
distance: "0.00006317660849859675"
id: "2"
name: "Pi Kappa Alpha - Epsilon Chapter"
__proto__: Object
length: 1
__proto__: Array[0]
concat: function concat() { [native code] }
constructor: function Array() { [native code] }
every: function every() { [native code] }
filter: function filter() { [native code] }
forEach: function forEach() { [native code] }
indexOf: function indexOf() { [native code] }
join: function join() { [native code] }
lastIndexOf: function lastIndexOf() { [native code] }
length: 0
map: function map() { [native code] }
pop: function pop() { [native code] }
push: function push() { [native code] }
reduce: function reduce() { [native code] }
reduceRight: function reduceRight() { [native code] }
reverse: function reverse() { [native code] }
shift: function shift() { [native code] }
slice: function slice() { [native code] }
some: function some() { [native code] }
sort: function sort() { [native code] }
splice: function splice() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
unshift: function unshift() { [native code] }
__proto__: Object
答案 0 :(得分:1)
这是因为您使用的是jquery而不是angular $ http服务。 Angular没有检测到外部请求(如jquery)请求的变化。如果你想使用jquery而不是$ http,无论出于什么原因你都需要调用$ scope.apply()来告诉angular值值已经改变了。
这应该有效
$.post( "/turnup/index.php/app/companies_near", data,
function(response)
{
$scope.$apply(function(){
$scope.companies = JSON.parse(response);
});
});
https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$应用
答案 1 :(得分:0)
我相信你必须在HTTP请求完成时在回调中调用$scope.$apply();
,否则AngularJS将不会知道任何改变。
如果你使用内置的$http
,这将自动发生。
更多详情:http://www.sitepoint.com/understanding-angulars-apply-digest/
答案 2 :(得分:0)
您需要在更新公司后应用您的更改,因为您的帖子超出了角度摘要周期。 所以你做了
$scope.$apply();
在你的任务完成之后应该这样做。如何尝试解决$ http问题,它将更加清洁和易于使用。
答案 3 :(得分:0)
如果你正在使用角度,肯定更喜欢$ http而不是$ .post:
$http({ url:'/turnup/index.php/app/companies_near', method:'POST'})
.success(data) {
$scope.companies = data;
console.log($scope.companies);
});