Javascript 使用angularjs将复选框设置为选中时出错
这是html: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="{
<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'”