如果数据可用,Angularjs单击行

Angularjs click row if the data is available

本文关键字:Angularjs 单击 数据 如果      更新时间:2023-09-26

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

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

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

这几乎可以检查第一个和第二个值是否不为null,如果不是,则单击第一行。这有时会起作用,但几乎每次我都会收到这个错误"

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

http://errors.angularjs.org/1.4.3/$rootScope/inprog?p0=%24摘要

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

使用$q.all,您可以在一个数组中传入多个$http请求。您可以在q.all()方法上使用.then,并在它们全部完成后获得回调。

$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
            });
        }
    }
);

如果点击事件背后的唯一目的是显示或隐藏,那么您可能会一起跳过点击事件。在tr(或任何其他想要显示的元素)中放一个"ng-show",然后简单地将一个作用域变量设置为等于引用数据的变量。如果你有数据,那么你的ng秀将是真实的,它会显示出来。这也是假设您的数据在可用之前是未定义的或空的,如果不只是将其设置为false的话。

     In view:
    <tr ng-show="checkData"></tr> 
    In controller:
    $scope.checkData = data;