选择md-checkbox内的输入元素将切换复选框

时间:2017-04-14 09:01:50

标签: angularjs checkbox angular-material

在多个复选框的列表中,我有一个"其他"复选框,用户可以在其中插入一些文本。这被定义为:

<md-checkbox class="md-checkbox-interactive" ng-model="$ctrl.someVar">
  <input type="text" placeholder="Placeholder" ng-model="$ctrl.someVarText">
</md-checkbox>

md-checkbox-interactive用于允许input元素上的指针事件:

md-checkbox.md-checkbox-interactive {
  .md-label {
    input {
      pointer-events: all;
    }
  }
}

这是从关于单选按钮的类似问题的以下答案中获取的:https://stackoverflow.com/a/33304119/2051151

但是,每当我选择输入元素时,都会切换复选框。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

经过一些搜索后,我发现我需要在input元素上添加以下内容:

ng-click="$ctrl.onClickInput($event)"

其中函数定义为:

this.onClickInput = function (event)
{
  // Prevent the click event to propagate
  event.stopPropagation();

  // But toggle the checkbox if necessary
  if (!vm.someVar) vm.someVar = true;
}

这样可以防止意外切换复选框。