使用ng-model绑定和复选框

时间:2015-11-15 06:06:06

标签: angularjs

我试图拦截复选框更改,因此我可以在中间放置一个确认阶段,我遇到了奇怪的行为。

当我单击复选框preventDefault时,阻止UI更改复选框,但绑定模型将更改一次,然后不再可更改。

关于如何解决此问题的任何想法?我接近这个错误吗?

$scope.change = function(selected, $event){
      $event.preventDefault();
    };

https://jsfiddle.net/tcVhN/197/

  

编辑:回答JB的问题如下:

     
      
  1. 我正在尝试拦截复选框更改,因此我可以在IE中间放置一个确认步骤"您确定要更改吗?   这个文本框?"

  2.   
  3. 刚更新为1.47(并更新了jsfiddle链接)。

  4.   
  5. 我使用ng-click是因为ng-change没有通过事件   通过这意味着我无法通过取消ui更改   $ event.preventDefault。

  6.   
  7. 见上文。

  8.   

1 个答案:

答案 0 :(得分:1)

我修改了你的小提琴以使它工作: https://jsfiddle.net/masa671/8qrct4y2/

请注意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的帮助下在事件处理程序之外处理实际更改。

至少小提琴似乎以一种理智的方式工作......: - )