2017-10-10 142 views
0

我已经在ng-checked上调用了一个函数,并且通过该函数决定是否检查复选框。但是该函数在页面加载时没有被调用。为什么在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) 
     } 
    } 
+0

你所说的页面负载的意思吗? – Sajeetharan

+0

@Sajeetharan当我刷新页面。 –

+0

你如何在页面刷新时忽略ng检查? – Sajeetharan

回答

0

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

你几乎贴完整代码,为什么不能让一些最小的额外努力,使其成为一个可运行的片段?那么你可以知道这部分代码没有问题。

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) 
 
    } 
 
    } 
 
}
<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>

相关问题