使用angularjs将复选框设置为选中时导致的错误
Error caused when set checkboxes as checked using 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="{{category.id}}" />
{{category.name}}
</label>
</span>
this is my controller:
//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;
}
}
}
我想设置复选框选中,如果在$scope.userMenu
的值,但在检查功能,导致错误"无法读取属性'长度'的未定义",这个错误的原因是什么?
Cannot read property 'length' of undefined
表示$scope.userMenu
未定义。定义范围。
$scope.userMenu = [];
var roleId = sessionStorage.getItem("roleId");
这是因为你的userMenu
是从API加载的,check
函数在加载之前执行。
在顶部定义userMenu
,像这样-
$scope.userMenu = [];
这将阻止check
抛出错误。一旦菜单从API视图加载,它将重新渲染。
相关文章:
- Angularjs工厂注入错误
- AngularJS错误:提供程序必须从$get工厂方法返回值
- angularjs$valid-on-dates在firefox中报告错误
- 在AngularJs中隐藏默认错误消息
- spring和angularJS(我得到了类似HTTP状态404的错误)
- Angularjs控制器本地错误
- angularjs、因果报应和requirejs测试用例错误
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- AngularJS控制器在注入工厂时抛出错误
- AngularJS$http.post调用返回502(坏网关)错误
- AngularJS错误:$interpolate:$routeParams的interr插值错误
- AngularJS错误:请求的键的值不是对象.keys@[本地代码]
- Angular-nvD3条形图y轴缩放错误(AngularJS)
- 错误:AngularJs 变量未定义,当使用 grunt 运行时.(泽泽尔)
- 回调函数给出一个错误 - AngularJS
- 未知提供程序错误 - AngularJS 应用程序问题
- 在指令上定义我自己的“要求”,但抛出错误 - AngularJs
- 正则表达式模式抛出词法分析器错误 AngularJS
- 语法错误:AngularJS for循环中的Unexpected Identifier
- 状态400客户端发送的请求语法错误.Angularjs http