Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs ng模型绑定和复选框的奇怪行为 我试图拦截一个复选框的变化,这样我就可以在中间设置一个确认阶段,并且我正在经历奇怪的行为。_Angularjs - Fatal编程技术网

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问题的答案:

我试图拦截复选框的更改,这样我就可以在中间的伊江设置一个确认步骤:“你确定要改变吗?” 这个文本框?“

  • 刚刚更新到1.47(并更新了JSFIDLE链接)

  • 我正在使用ng click,因为ng更改未通过事件 这意味着我不能通过取消ui更改 $event.preventDefault

  • 见上文


  • 我已经修改了你的小提琴,使它工作:

    注意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在主要问题中添加了您问题的答案。