范围[String]动态函数不会在前面更新

时间:2017-08-03 16:11:37

标签: javascript angularjs function angularjs-scope

我正在使用angularJS + laravel应用程序,我试图从这样的动态函数更新某个范围:

$scope.closeoverlay = function (){
   argumentsArray = [].slice.apply(arguments);
   for (var i = 0; i < argumentsArray.length; i++) {
       console.log($scope[argumentsArray[i]]);
       $scope[argumentsArray[i]] = ''
       console.log($scope[argumentsArray[i]]);

   }
}

这是我的HTML代码:

<p>{{var1 ? var2+'-'+var3:'Nothing set'}}</p>
<div>
 <input type="radio" id="var3" name="var3" ng-model="var3" value="1" >
 <input class="form-control"  type="text" name="var1" ng-model="var1" format="number" >
 <input class="form-control"  type="text" name="var1" ng-model="var2" format="number" >
 <button id="cancel" class="btn btn-default btn-red" ng-click="closeoverlay('var1','var2','var3')">
  Cancel
 </button>
</div>

我必须使用动态范围,因为有大约4 - 5取消不同的vars。

主要的问题是,如果我控制vars它工作得很好,但在前面他们只是不更新​​,我通过申请进行一些测试,但总是得到$apply already in progress,我想我是做错了。 (我也尝试使用angular.foreach,但它也不起作用)

1 个答案:

答案 0 :(得分:0)

只是声明控制器中的变量

var app = angular.module('app', []);
app.controller('myController', function ($scope) {
    $scope.var1=1;
    $scope.var2=2;
    $scope.var3=3;
    $scope.closeoverlay = function (){
       argumentsArray = [].slice.apply(arguments);
       for (var i = 0; i < argumentsArray.length; i++) {
           console.log($scope[argumentsArray[i]]);
           $scope[argumentsArray[i]] = ''
           console.log($scope[argumentsArray[i]]);
       }
    }
});

我的例子的结果是:2-3取消