【发布时间】:2018-04-05 08:47:57
【问题描述】:
我正在为输入复选框和 ng 模型而苦苦挣扎。 我用 false 初始化我的变量,将其设置为输入复选框上的 ng-model。显示时,值为假。单击复选框后,值将变为 undefined 而不是 true。
这是我的代码:
<div ng-app="app" ng-controller="Controller">
<input id="check" type="checkbox" ng-model="model.noExpiry" ng-click="model.clickCheck()">Click
<p>{{model.noExpiry}}</p>
</div>
var module = angular.module("app",[]);
module.controller("Controller", function ($scope) {
$scope.model = {};
$scope.model.noExpiry = false;
$scope.model.clickCheck = function(){
console.log($scope.model.noExpiry);
}
});
如果我删除 ng-model 并将 model.clickCheck 函数更改为以下内容,它会正确地将变量从 false 更改为 true,反之亦然:
$scope.model.clickCheck = function(){
if($scope.model.noExpiry) {
$scope.model.noExpiry = false;
}
else {
$scope.model.noExpiry = true;
}
console.log($scope.model.noExpiry);
}
当我用 true 初始化 model.noExpiry 时,该复选框被选中,但是当取消选中并再次选中它时,它变为 false,然后再次变为未定义。
有没有人知道为什么变量没有变为 true 而是变为 undefined?
AngularJs 版本:1.5.5
【问题讨论】:
-
您是否在任何地方初始化您的模型?
$scope.model = {}; -
@AlekseySolovey 是的,抱歉忘记写了
-
那么你不应该得到 undefined,有错字什么的,但你的代码不足以复制问题
-
但如果是这种情况,那么为什么它总是正确地更改为 false,但永远不会更改为 true?为什么在使用 workaroung 通过 ng-click 函数设置变量时它会起作用?
标签: javascript angularjs angular-ngmodel angularjs-ng-model