Angularjs ng模型绑定和复选框的奇怪行为 我试图拦截一个复选框的变化,这样我就可以在中间设置一个确认阶段,并且我正在经历奇怪的行为。
当我点击复选框Angularjs ng模型绑定和复选框的奇怪行为 我试图拦截一个复选框的变化,这样我就可以在中间设置一个确认阶段,并且我正在经历奇怪的行为。,angularjs,Angularjs,当我点击复选框prevent时,默认值将阻止用户界面更改复选框,但绑定模型将更改一次,然后不再可更改 有没有办法解决这个问题?我是不是走错路了 $scope.change = function(selected, $event){ $event.preventDefault(); }; 编辑:以下是JB问题的答案: 我试图拦截复选框的更改,这样我就可以在中间的伊江设置一个确认步骤:“你确定要改变吗?” 这个文本框?“ 刚刚更新到1.47(并更新了JSFIDLE链接) 我正
prevent
时,默认值将阻止用户界面更改复选框,但绑定模型将更改一次,然后不再可更改
有没有办法解决这个问题?我是不是走错路了
$scope.change = function(selected, $event){
$event.preventDefault();
};
编辑:以下是JB问题的答案:
我试图拦截复选框的更改,这样我就可以在中间的伊江设置一个确认步骤:“你确定要改变吗?”
这个文本框?“
我已经修改了你的小提琴,使它工作: 注意HTML中的更改:
ng model=“x.checked”
到ng checked=“x.checked”
JavaScript:
$scope.change = function(selected, $event){
$event.preventDefault();
$timeout(function () {
if (window.confirm('Are you sure?')) {
selected.checked = !selected.checked;
}
});
};
对我来说,关键的问题是找出在用户确认更改之前如何防止复选框状态的更改。我不知道最佳/正确的解决方案,但我解决了这个问题,因此事件处理程序只会阻止默认行为,而实际的更改是在$timeout
的帮助下在事件处理程序外部处理的
至少小提琴似乎是以一种理智的方式工作的…:-) 顺便说一句,你有一个打字错误。将
event.preventDefault()
更改为$event.preventDefault()
.1。解释为什么需要防止违约,2。解释为什么使用oooold版本的angular,3。解释为什么使用ng click而不是ng change,4。首先解释为什么需要change函数。自动模型更改应该足以实现您想要的。嘿,JB在主要问题中添加了您问题的答案。