【发布时间】:2014-08-19 02:46:20
【问题描述】:
所以由于客户端限制,我无法真正解决这个问题,但一般来说,我有一个双向数据绑定字符串,在触发某些任意事件之前不会在 html 端更新(一旦任何按钮被点击然后它会更新,即使只是切换可见性的琐碎按钮也会更新它)。因此,如果我最初将 $scope.verifiedAddressed1 设置为等于“正在验证...”,它将数据绑定,但是一旦我将其更改为“1234 Cherry Lane”,它不会更新,直到我单击网页上的某个按钮。 html 部分看起来像这样
<p>{{verifiedAddressed1}}</p> // "verifying..."
虽然角度代码如下所示:
$scope.verifiedAddressed1 = "verifying...";
$scope.verifyAddress = function(isValid){
if(isValid){
$.get( "validURL.com", function( data ) {
$scope.verifiedAddressed1 = data[0].validData;
console.log($scope.verifiedAddressed1); //"1234 Cherry Lane"
});
}, 400);
setTimeout(function() {
console.log($scope.verifiedAddressed1); //"1234 Cherry Lane"
}, 700);
}
}
有没有人见过像这样的奇怪错误?我已经使用 AngularJS 有一段时间了,我知道这里和那里仍然存在很多小错误,尤其是在按钮点击和其他方面,但我相当确定这与按钮事件无关,因为任何页面上的按钮将激活verifiedAddressed1上的双向绑定更新
【问题讨论】:
-
范围由 jQuery 回调更新。您需要致电
$scope.$apply()。但最好使用$http进行ajax 调用。 -
@AnthonyChu 感谢您提供快速而明显的解决方案。我需要停止混合 jquery 和 Angular!
-
是的,请开始以角度思考,让自己的生活更轻松。顺便说一句,也使用 $timeout 服务而不是 setTimeout。 docs.angularjs.org/api/ng/service/$timeout
标签: javascript jquery html angularjs