为什么没有调用ng-checked上的函数

时间:2017-10-10 05:25:22

标签: javascript angularjs

我在ng-checked上调用了一个函数,通过该函数决定是否选中复选框。但是该功能不会在页面加载时被调用。

html -

<label>
     <input type="checkbox" name="status1" id="status1" ng-click="vm.updateStatus('processing')" ng-checked="vm.isSelectedStatus('processing')"> In progress
</label>

JS(控制器) -

var vm = this;
vm.isSelectedStatus = isSelectedStatus;

vm.tasksStatus = ["processing", "finished", "failed"];

function isSelectedStatus(status) {
  return vm.tasksStatus.indexOf(status) > -1;
}

function updateStatus(status) {
        var index;

        index = vm.tasksStatus.indexOf(status);

        if(index === -1) {
            vm.tasksStatus.push(status);
        } else {
            vm.tasksStatus.splice(index, 1)   
        }
    }

1 个答案:

答案 0 :(得分:0)

我可以看到代码正常工作..

您几乎发布了完整的代码,为什么不做一些额外的努力才能使其成为可运行的代码段?然后你可以知道这部分代码没有问题。

&#13;
&#13;
angular.module('test', []).controller('Test', Test);

function Test() {
  var vm = this;
  vm.isSelectedStatus = isSelectedStatus;
  vm.updateStatus = updateStatus;

  vm.tasksStatus = ["processing", "finished", "failed"];

  function isSelectedStatus(status) {
    return vm.tasksStatus.indexOf(status) > -1;
  }

  function updateStatus(status) {
    var index;

    index = vm.tasksStatus.indexOf(status);

    if (index === -1) {
      vm.tasksStatus.push(status);
    } else {
      vm.tasksStatus.splice(index, 1)
    }
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<div ng-app='test' ng-controller='Test as vm'>
  <label>
     <input type="checkbox" name="status1" id="status1" ng-click="vm.updateStatus('processing')" ng-checked="vm.isSelectedStatus('processing')"> In progress
  </label>
  
  <div>{{vm.tasksStatus}}</div>
</div>
&#13;
&#13;
&#13;