我正在尝试将数据传递给用户电子邮件订阅状态为“Y”/“N”的API。
在控制器代码中console.log(a.checked)
未定义。但是在常规javascript中,输入元素type="checkbox"
的onclick事件使this.checked
相应地响应为true或false。为什么在AngularJS中没有发生这种情况?
我的html代码,带有角度指令ng-click:
<label for="mail_sub">E-mail subscription</label>
<input id="mail_sub" type="checkbox" name=checkbox ng-click="mailsubscription(this)">
控制器代码:
.controller("registerCtrl", function($scope, $state, userProcess) {
$scope.mailsubscription = function(a) {
console.log(a);
console.log(a.checked); // console output is: "undefined"
signupinfo = {};
if (a.checked) {
signupinfo.u_mail_subscription = 'Y';
} else {
signupinfo.u_mail_subscription = 'N';
}
console.log(signupinfo);
};
/*$scope.registerProcess = function(signupinfo){
console.log(signupinfo);
userProcess.signup(signupinfo).sucess(function(response){
if(response.status){
}
})
};*/
});
答案 0 :(得分:1)
您的范围内未定义任何已检查。你有这样的事情:
$scope.checked = false
$scope.mailsubscription = function () {
$scope.checked = !$scope.checked;
console.log($scope.checked)
};
或者您可以在模板中使用ngModel指令
<input id="mail_sub" type="checkbox" name=checkbox ng-click="mailsubscription(this)" ngModel="checked">
如果你这样做,你不需要切换你自己检查的变量。