为什么如果条件不在复选框中?

时间:2015-06-17 23:17:30

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我正在尝试将条件添加到我的演示.Mean中,当用户从复选框中选择第一个元素name ="bbeser"时,他无法选择。但在我的情况下,他能够选择原因 这是我的傻瓜 http://plnkr.co/edit/fHdnWwIRgi5jFLQlCWKs?p=preview

$scope.itemCheckedUnCheckedhandler = function (item) {
  if (item.name=="bbeser") {
    item.checked=false
  }
  // $scope.checkedItems[index] = !$scope.checkedItems[index];
}

请选择第一个元素,然后查看结果。

2 个答案:

答案 0 :(得分:2)

听起来你确实想要在给定条件下禁用该复选框。这将确保用户无法与给定的复选框进行交互。

您可以在模板中执行以下操作:

  <ul ng-repeat="item in a">
    <li>
      <label>
        <input type="checkbox" 
        ng-model="item.checked"
        ng-click="handler(item)"
        ng-disabled="item.name === 'bbeser'">
        {{item.name}}
      </label>
    </li>
  </ul>

当然,如果禁用语句:item.name === 'bbeser'变得复杂,您应该将其重构为自己的方法。

答案 1 :(得分:1)

您需要使用ng-change而不是ng-click。 ng-click太早了,模型还没有改变。即

 <input type="checkbox" class="checkboxposiion" 
    ng-model="item.checked" 
    ng-class="{backgrounfimageset : item.checked}" 
    ng-change="itemCheckedUnCheckedhandler(item)">

<强> Plnkr