关于 angularjs:值不会在复选框中自动分配

Values are not automatically assigning in checkbox

我有一个显示停用帐户的复选框,当在请求中选中该复选框时,我需要将activationstatus 发送为 false 以显示停用帐户,当未选中时,它应该将值传递为 true。我的复选框只是在初始化 $scope.checkedStatus = true 后传递了相同的值。值没有传递为 false。

HTML :

1
2
<input type="checkbox" ng-model="checkedStatus" ng-click ="viewAccount">
  Show Deactivated Account

JS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 $scope.checkedStatus = true;
 $scope.viewAccount = function(){

              var json = {
 "json": {
   "request": {
     "servicetype":"6",
     "functiontype":"6014",
     "session_id": $rootScope.currentSession,
          "data": {
       "shortname": $scope.model.selectShortName,
       "groupzname": $scope.model.selectGname,
       "city": $scope.model.selectCity,
       "state": $scope.model.selectState,
       "country": $scope.model.selectCountry,
       "groupzcode": $scope.model.selectGcode,
        "activationstatus": !($scope.checkedStatus),
       "details": false,
       "sortbasedon": $scope.groupzname,
       "orderby":"desc",
       "offset":$scope.pagination
           }

    }
  }
};

    UserService.viewListAccount(json).then(function(response) {
    if (response.json.response.statuscode == 0)
                        {
                   $scope.tableData = response.json.response.data;
                        }
                });
        };

自动复选框不会改变值。


对于复选框,Angular 有一个名为 ng-change 的特殊指令,请改用它。

1
2
   <input type="checkbox" ng-model="checkedStatus" ng-change="viewAccount()">
   Show Deactivated Account

在 $scope 中创建一个package对象模型并在其中创建 checkedStatus 属性。

1
2
3
$scope.model = {
    checkedStatus: true
};

并在其引用的地方进行相关更改。

像在 html 中做这些改变

1
ng-click="viewAccount()" ng-model="model.checkedStatus"

另外作为一个附注,你不应该直接在作用域上附加属性,并且总是尝试创建一个package对象或使用控制器作为语法来摆脱这些问题。

查看这篇文章:AngularJS:如果你没有点,那么你做错了 - 更多信息请访问:http://zcourts.com/2013/05/31/angularjs-if-你做错了/#sthash.NDNvWL5E.dpuf


在您的 json 中,您只是否定 $scope.checkedStatus,但不会更改其值。所以总是你得到相同的结果。
您可以更改范围值,而不是在 json 中使用 !($scope.checkedStatus)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 $scope.checkedStatus = true;
 $scope.viewAccount = function(){
   $scope.checkedStatus = !$scope.checkedStatus; //check this line
    var json = {
   "json": {
     "request": {
       "servicetype":"6",
       "functiontype":"6014",
          .
          .
         "activationstatus": $scope.checkedStatus,
          .
          .
         "orderby":"desc",
         "offset":$scope.pagination
             }

      }
    }
};

你可以使用

ng-change

在输入中。
在这里你可以用 html 来做。

1
2
<input type="checkbox" ng-model="checkedStatus" ng-click ="viewAccount" ng-change="change()">
  Show Deactivated Account

这是您在控制器中访问它的方式。

1
2
3
$scope.change = function() {
  $scope.viewAccount();
}