在AngularJs内部循环中创建动态范围变量

Vai*_*gon 11 javascript angularjs

我是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();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出一个错误说:$digest已经在进行中.

代码在没有循环的情况下正常使用,如下所示: 在AngularJs中设置动态范围变量 - 范围.<some_string>

我最终正在寻找$scope.list1=[]$scope.list2=[]作为2个独立的阵列.

任何线索都会很棒.谢谢.

moh*_*ias 12

上面的代码抛出错误说:$ digest已在进行中.

你已经在控制器和角度范围内了.因此无需使用触发摘要循环$scope.$apply().即使你必须检查$$phase然后申请.

if (!$scope.$$phase) $scope.$apply()
Run Code Online (Sandbox Code Playgroud)

但对于您的方案,根本不需要它

$scope.lists = [{listName: 'list1'}, {listName: 'list2'}];

angular.forEach($scope.lists, function(item) {
    var listName = item.listName;
    $scope[listName] = [];
});
Run Code Online (Sandbox Code Playgroud)