在ng-click功能中传递参数

时间:2018-02-10 10:14:18

标签: angularjs checkbox input this

我正在尝试将数据传递给用户电子邮件订阅状态为“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){


                    }
                })

            };*/
});

1 个答案:

答案 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">

如果你这样做,你不需要切换你自己检查的变量。