2017-10-10 140 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>

相關問題