AngularJS中的切换复选框未反映在控制器中

时间:2014-05-15 13:55:18

标签: javascript html angularjs

我有一个复选框:

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

当我点击按钮时,无论是否选中该复选框,它都会将复选框显示为true。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

提示:尊重"dot rule"

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

答案 1 :(得分:0)

昨天遇到同样的问题,请尝试使用ng-true-value&amp; NG-假值

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

在您的情况下使用true&amp;假

答案 2 :(得分:0)

console.log的输出是什么(typeof $ scope.defaultAssigneeCheckbox)?我有一种感觉它是&#39;字符串&#39;在这种情况下,$ scope.defaultAssigneeCheckbox始终为true。所以试试这个:

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

如果有效则可以确定你是否正确或者你需要强制一个布尔值。在这种情况下,@ Mario Campa的解决方案看起来不错。就个人而言,我更喜欢布尔值,因为经验表明在这些情况下它会更有用。

相关问题