【问题标题】:Prevent check of checkbox until function has been called在调用函数之前阻止检查复选框
【发布时间】:2021-09-16 22:56:13
【问题描述】:

我们正在使用 AngularJS,我们需要运行一个函数来确定用户单击的复选框是否被实际选中。我试图在ngChange 上传递$event,但发现它无法传递$event 对象。我想访问$event 对象的原因是我可以在调用所需的函数之前阻止默认行为。

代码如下(不包括我试图通过$event的代码,因为它不起作用):

<label for="specificCase">
    Yes
    <input 
        type="checkbox" 
        name="specificCase" 
        data-ng-click="specificCase.no = false; specificCase.unsure = false;" 
        data-ng-model="specificCase.yes" 
        data-ng-change="$ctrl.specificCaseCheck('yes', specificCase.yes)">
</label>
<label for="notSpecificCase">
    No
    <input 
        type="checkbox" 
        name="notSpecificCase" 
        data-ng-click="specificCase.yes = false; specificCase.unsure = false;" 
        data-ng-model="specificCase.no" 
        data-ng-change="$ctrl.specificCaseCheck('no', specificCase.no)">
</label>

控制器

function specificCaseCheck(value, boolean) {

     //HERE I WANT TO PREVENT THE DEFAULT BEHAVIOUR OF THE CHECKBOX CHECKING

    vm.optionSelected = !boolean ? false : true;
    vm.caseSpecific = value == 'yes' && boolean ? true : false;
}

问题

在控制器中运行函数之前,如何保持未选中复选框?

【问题讨论】:

  • 你试图达到的目的听起来有点模糊,你想在用户点击复选框时运行一个函数,并且只有在函数完成后才“检查”?
  • 是的,所以他们可以检查它(点击它),但在函数运行之前,复选框不会显示为被选中

标签: angularjs angularjs-ng-change


【解决方案1】:

由于您需要防止默认行为但没有event,您可以按照这个问题的方法Angular 2 Checkbox preventDefault

基本上,您需要在事件处理程序中 return false 以防止“单击时检查复选框”的默认行为,然后您可以通过编程方式单击它

为此,您可以检查此问题Angular 4 checkbox set programmatically

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-08
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多