2014-05-15 24 views
0

我有一個複選框:繃複選框沒有反映在控制器

<input ng-model="defaultAssigneeCheckbox" type="checkbox"/> 
<p>{{defaultAssigneeCheckbox}}</p> 

<button type="submit">Save</button> 

段落下方示出並正確地更新falsetrue之間其狀態。不管複選框是否被選中或不

$scope.updateProject = function() { 
    var project = $scope.project; 
    console.log(typeof $scope.defaultAssigneeCheckbox) 
    console.log($scope.defaultAssigneeCheckbox) 
    if (!$scope.defaultAssigneeCheckbox) { 
     delete project.defaultAssignee; 
    } 
}; 

當我點擊按鈕,它顯示的複選框是真的: 單擊按鈕時運行控制器功能。

我在做什麼錯?

+0

console.log(typeof $ scope.defaultAssigneeCheckbox)的輸出是什麼? –

回答

1

提示:尊重"dot rule"

<input ng-model="data.defaultAssigneeCheckbox" type="checkbox" /> 
+0

我已經將defaultAssigneeCheckbox移到了我已經擁有的項目對象上,它似乎有所幫助。謝謝! –

0

昨天有同樣的問題,請嘗試使用NG-真值& NG-假值

<input type="checkbox" ng-model="model.value" ng-true-value="1" ng-false-value="0"> 

在你的情況使用真&假

0

console.log(typeof $ scope.defaultAssigneeCheckbox)的輸出是什麼?我有一種感覺,它是'字符串',在這種情況下,$ scope.defaultAssigneeCheckbox始終爲真。因此,嘗試這個辦法:

if ($scope.defaultAssigneeCheckbox != true) { 
    delete project.defaultAssignee; 
} 

如果工作原理圖,如果你都OK與,或者如果您需要強制一個布爾值。在這種情況下,@Mario Campa的解決方案看起來不錯。就個人而言,我更喜歡布爾值,因爲經驗表明它在這些情況下會更有用。