如果数据可用,Angularjs会点击行

时间:2015-11-30 22:08:19

标签: javascript angularjs

我是JavaScript的新手,所以我不确定什么是可能的。我使用AngularJS作为我的前端应用程序。 我有一个可点击的表(行),它几乎就是表格内的表格(可折叠表格)

如果数据可用,我试图点击表格的第一行,所以我写了这个函数

 $scope.clicker = function(){
    if (!$scope.first || !$scope.second){
         setTimeout($scope.clicker, 500)
       } 
    $(".clickableRow").first().click()
  } 

这几乎检查第一个和第二个值是否为空,如果不是,则单击第一行。这有时会工作,但几乎每次我都会收到此错误“

Error: [$rootScope:inprog] $digest already in progress

http://errors.angularjs.org/1.4.3/ $ rootScope / inprog?P0 =%24digest

我不确定这意味着什么。任何帮助都会很好。

2 个答案:

答案 0 :(得分:0)

使用$q.all,您可以在数组中传递多个$http个请求。 您可以在.then方法上使用q.all(),并在完成后收到回电。

$scope.$watch(
    function() {
        return $route.current;
    },
    function(newValue) {
        if (newValue) {
            $scope.url = newValue.$$route.originalPath;

            if($scope.url == '/loadTestForm') return;

            $scope.neustaridParam = newValue.params.neustarid;
            $q.all([
                $http.get('/corecase/browserKPI/'+$scope.neustaridParam).success(function(response){
                    $scope.browserKPI = response;
                }),
                $http.get('/corecase/serverKPI/'+$scope.neustaridParam).success(function(response){
                        $scope.serverKPI = response;
                }),
                $http.get('/corecase/info/'+$scope.neustaridParam).success(function(response){
                        $scope.corecaseinfo = response;
                })
            ]).then(function(){
                $scope.selectTableRow(0, 1000); //I'd advise not hardcoding the first row's data here. You can do something like this instead: $scope.storeDataModel.storedata[0].id, scope.storeDataModel.storedata[0].storeId
            });
        }
    }
);

答案 1 :(得分:0)

如果click事件背后的唯一目的是显示或隐藏,那么您可以一起跳过click事件。在您的tr(或您想要显示的任何其他元素)中放置一个“ng-show”,并简单地设置一个范围变量等于引用您的数据的任何内容。如果你有数据,那么你的ng-show将是真的,它会显示出来。这也假设您的数据未定义或为空,直到它可用,如果不是仅将其设置为false。

     In view:
    <tr ng-show="checkData"></tr> 

    In controller:
    $scope.checkData = data;