[英]Angular directive throws off two-way data binding
我正在将此jQuery自动完成插件改编为指令-https: //github.com/devbridge/jQuery-Autocomplete 。
我有一个有效的指令:
App.directive('autocomplete', ->
return {
restrict: 'A',
link: ($scope, elem, attr) ->
console.log(attr.autocomplete)
elem.autocomplete({
serviceUrl: '/videos/autocomplete/' + attr.autocomplete
})
}
)
但是,当我在自动完成列表中选择某项时,两种方式的数据绑定混乱了,只有输入被更新了。
有想法该怎么解决这个吗?
对此死灵化 ,因为我认为这对许多人来说是有用的,我知道我指的是这一篇好文章:)
Angular有一种方法来观察我们对象中的变化,该方法依赖于JavaScript的“基于回合”性质。 吉姆霍斯金斯(Jim Hoskins)在这篇很棒的文章中对此进行了非常清楚的解释。
基本上,Angular检查周期中的变化,但是当这些周期之间发生某些变化时,它无法知道需要再次执行检查! (非常简单的解释;再次参考该文章 )
最重要的是,我们需要通知它我们已更改了某些内容,因此,假设您的选择触发了一个执行action()
的handler()
action()
您只需包裹action
为$scope.$apply
function handler(){
$scope.$apply(function(){
action();
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.