相关疑难解决方法(0)

AngularJS:在调用$ scope时防止错误$ digest正在进行中.$ apply()

我发现自从以角度构建应用程序后,我需要手动将页面更新到我的范围.

我知道这样做的唯一方法是$apply()从我的控制器和指令的范围调用.这个问题是它不断向控制台抛出一个错误:

错误:$ digest已在进行中

有谁知道如何避免这个错误或以不同的方式实现相同的事情?

angularjs angularjs-scope angularjs-digest

832
推荐指数
14
解决办法
42万
查看次数

什么时候使用$ scope是安全的.$ apply()?

我想这个标题非常清楚我要问的是什么.我创造了这个小提琴:http://jsfiddle.net/Sourabh_/HB7LU/13142/

在小提琴中,我试图复制一个async场景.这只是一个例子,但在AJAX调用中如果我不使用$scope.$apply()该列表则不会更新.我想知道$scope.$apply()每次进行AJAX调用更新列表时是否安全使用,还是有其他一些我可以使用的机制?

我编写的代码用于复制场景(与小提琴相同):

HTML

<div ng-controller="MyCtrl">
  <li ng-repeat="item in items">
    {{item.name}}
  </li>
  <button ng-click="change()">Change</button>
</div>
Run Code Online (Sandbox Code Playgroud)

JS

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
  $scope.items = [{name : "abc"},{name : "xyz"},{name : "cde"}];

  $scope.change = function(){
    test(function(testItem){
      $scope.items = testItem;
      //$scope.$apply();
    })
  }
  function test(callback){
    var testItem = [
                    {name : "mno"},
                    {name : "pqr"},
                    {name :   "ste"}
                   ];
    setTimeout(function(){callback(testItem)},2000);
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript ajax angularjs

14
推荐指数
3
解决办法
2万
查看次数

在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个独立的阵列.

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

javascript angularjs

11
推荐指数
1
解决办法
2万
查看次数