Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用angularjs将复选框设置为选中时出错_Javascript_Angularjs - Fatal编程技术网

Javascript 使用angularjs将复选框设置为选中时出错

Javascript 使用angularjs将复选框设置为选中时出错,javascript,angularjs,Javascript,Angularjs,这是html: <span ng-repeat="category in categories"> <label class="checkbox-inline" for="{{category.id}}"> <input type="checkbox" ng-checked="check(category.id)" ng-click="saveRoleMenu($event,category.id)" name="group" id="{

这是html:

<span ng-repeat="category in categories">
      <label class="checkbox-inline" for="{{category.id}}">
        <input type="checkbox" ng-checked="check(category.id)" ng-click="saveRoleMenu($event,category.id)" name="group" id="{{category.id}}" />
        {{category.name}}
      </label>
</span>

{{category.name}
这是我的控制器:

//get all the menus
authorityService.getMenus().then(function(response) {
    $scope.categories = response.data.data; //get all the menus success
})

//get the user's menus
var roleId = sessionStorage.getItem("roleId");
authorityService.getMenusByRoleId(roleId).then(function(response) {
    $scope.userMenu = response.data.data; //get the user's menu success
})
$scope.saveRoleMenu = function($event, id) {
    var checkbox = $event.target;
    if (checkbox.checked) {
        var roleId = $location.search().id;
        authorityService.saveRoleMenu(roleId, id).then(function(response) {
            if (response.data.code == 0) {
                alert("success!");
            }
        })
    }
}

$scope.check = function(value) {
    //error caused here
    for (var i = 0; i < $scope.userMenu.length; i++) {
        if(value == $scope.userMenu[i].id){
            return true;
        }else{
            return false;
        }
    }
}
//获取所有菜单
authorityService.getMenus().then(函数(响应){
$scope.categories=response.data.data;//成功获取所有菜单
})
//获取用户的菜单
var roleId=sessionStorage.getItem(“roleId”);
authorityService.getMenusByRoleId(roleId).then(函数(响应){
$scope.userMenu=response.data.data;//获取用户的菜单成功
})
$scope.saveRoleMenu=函数($event,id){
var复选框=$event.target;
如果(复选框。选中){
var roleId=$location.search().id;
authorityService.saveRoleMenu(roleId,id).然后(函数(响应){
if(response.data.code==0){
警惕(“成功!”);
}
})
}
}
$scope.check=函数(值){
//这里引起的错误
对于(变量i=0;i<$scope.userMenu.length;i++){
if(值==$scope.userMenu[i].id){
返回true;
}否则{
返回false;
}
}
}
如果
$scope.userMenu
中的值导致错误“无法读取未定义的属性'length',则我想设置复选框选中,此错误的原因是什么

Cannot read property 'length' of undefined
表示
$scope。未定义用户菜单
在为$scope.userMenu赋值之前定义$scope.userMenu。

$scope.userMenu = [];
var roleId = sessionStorage.getItem("roleId");
表示
$scope。未定义用户菜单
在为$scope.userMenu赋值之前定义$scope.userMenu。

$scope.userMenu = [];
var roleId = sessionStorage.getItem("roleId");
表示
$scope。未定义用户菜单
在为$scope.userMenu赋值之前定义$scope.userMenu。

$scope.userMenu = [];
var roleId = sessionStorage.getItem("roleId");
表示
$scope。未定义用户菜单
在为$scope.userMenu赋值之前定义$scope.userMenu。

$scope.userMenu = [];
var roleId = sessionStorage.getItem("roleId");

这是因为
userMenu
是从API加载的,并且
check
函数在加载之前执行

在顶部定义
userMenu
,如下所示-

$scope.userMenu = [];

这将阻止
check
抛出错误。从API加载菜单后,视图将与其一起重新呈现。

因为您的
用户菜单
是从API加载的,并且在加载之前执行
检查
函数

在顶部定义
userMenu
,如下所示-

$scope.userMenu = [];

这将阻止
check
抛出错误。从API加载菜单后,视图将与其一起重新呈现。

因为您的
用户菜单
是从API加载的,并且在加载之前执行
检查
函数

在顶部定义
userMenu
,如下所示-

$scope.userMenu = [];

这将阻止
check
抛出错误。从API加载菜单后,视图将与其一起重新呈现。

因为您的
用户菜单
是从API加载的,并且在加载之前执行
检查
函数

在顶部定义
userMenu
,如下所示-

$scope.userMenu = [];
这将阻止
check
抛出错误。一旦从API加载菜单,视图将重新呈现。

@SarjanDesai only this:“类型错误:无法读取未定义的属性'length'”@SarjanDesai only this:“类型错误:无法读取未定义的属性'length'”@SarjanDesai only this:“TypeError:无法读取未定义的属性'length'”