我是Angular.js的新手,我试图在for循环中的AngularJs中创建动态范围变量.这是如下所示:
$scope.lists=[{listName:'list1'},{listName:'list2'}]; for(var i=0;i<$scope.lists.length;i++){ var listName = $scope.lists[i].listName; listName = $parse(listName); listName.assign($scope,[]); $scope.$apply(); }
当没有循环使用时,该代码可以正常工作,如下所示:
Setting dynamic scope variables in AngularJs – scope.<some_string>
我最终正在寻找$scope.list1 = []和$scope.list2 = []作为2个独立的数组.
任何潜在客户都会很棒.谢谢.
解决方法
The above code throws an error saying: $digest already in progress.
你已经在控制器和角度范围.所以不需要使用$scope来触发摘要循环$apply().即使您必须检查$$阶段,然后申请.
if (!$scope.$$phase) $scope.$apply()
但是对于您的场景,它根本不是必需的
$scope.lists = [{listName: 'list1'},{listName: 'list2'}]; angular.forEach($scope.lists,function(item) { var listName = item.listName; $scope[listName] = []; });