Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何管理函数执行中的angularJS优先级? 上下文_Javascript_Angularjs - Fatal编程技术网

Javascript 如何管理函数执行中的angularJS优先级? 上下文

Javascript 如何管理函数执行中的angularJS优先级? 上下文,javascript,angularjs,Javascript,Angularjs,$scope.getAllEvents()正在从Firebase数据库获取最近10个事件中的数组,并将其放入$scope.events数组中。然后,该函数将按日期排序$scope.events。我正在初始化$scope.paticetab并调用$scope.paticefunc() 每当ng repeat$index是5的倍数时,HTML中就会触发$scope.counterPub()。该函数正在$scope.paticetab中存储触发的$index的每个值。基本上,它是一个选项卡,用于注册未

$scope.getAllEvents()
正在从Firebase数据库获取最近10个事件中的数组,并将其放入
$scope.events
数组中。然后,该函数将按日期排序
$scope.events
。我正在初始化
$scope.paticetab
并调用
$scope.paticefunc()

每当ng repeat
$index
是5的倍数时,HTML中就会触发
$scope.counterPub()
。该函数正在
$scope.paticetab
中存储触发的
$index
的每个值。基本上,它是一个选项卡,用于注册未来的新项目位置。然后我删除double并将结果保存在
$scope.result

最后,
$scope.stiplefunc()
正在读取
$scope.result
,并将位置存储在
$scope.result
中的新项目插入
$scope.events

跑步 在我的应用程序开始时,
$scope.events
已填充,但
$scope.result
中的
$scope.strippefunc()
保持为空。当我使用无限滚动加载10个以上的事件时,它正在工作,但是
$scope.events.sort()
算法在
$scope.strippefunc()
之前工作,因此我的新项目位于列表的底部,而不是我想要的位置

问题 我希望以以下方式运行我的应用程序:

  • 从Firebase填充
    $scope.events
  • 按日期对
    $scope.events
    进行排序
  • ng在HTML中重复并在触发时填充
    $scope.spliceTab
  • 最后,在已排序的数组上运行
    $scope.stiplefunc()
  • 你认为这可能吗

    //获取事件的函数
    $scope.getAllEvents=函数(){
    如果($scope.listSiz==未定义){
    $scope.listSiz=10;
    }
    var ref=firebase.database().ref().child(“事件”);
    $scope.events=$firebaseArray(ref.orderByChild('endDate').limitToFirst($scope.listSiz));
    $scope.events.$loaded().then(function())
    {
    $scope.events.sort(函数比较枚举数(y,x){
    var date1=新日期(x.endDate);
    var date2=新日期(y.endDate);
    返回日期1-日期2;
    });
    如果($scope.listSiz==30){
    $scope.nomoreitemsavaailable=true;
    }
    $scope.tab=[];
    $scope.stiplefunc();
    });
    };
    //在HTML中触发的函数
    $scope.counterPub=函数($index){
    变量模=$索引%5;
    if(模===0){
    $scope.tab.push($index);
    //删除双打
    $scope.result=[];
    $scope.tab.forEach(函数(项){
    if($scope.result.indexOf(item)<0){
    $scope.result.push(项目);
    }
    });
    返回true;
    }否则{
    返回false;
    }
    };
    //功能拼接
    $scope.stiplefunc=函数(){
    //console.log(“****************选项卡**********************=”,$scope.result);
    angular.forEach($scope.result,function(value){
    $scope.events.splice(值0[{
    姓名:“托托”
    }]);
    });
    };
    
    
    你好,世界!
    
    $firebaseArray()
    是一种异步操作。你可以从中得到一个承诺,并在承诺兑现后执行剩余的操作。哦!这解决了一个问题,谢谢。我添加了
    $scope.events.$loaded()。然后(function()
    )在排序算法之前,现在当我使用无限滚动时,新项目被很好地放置。但是,在第一个开始时
    $scope.spitlefunc()
    似乎被忽略,我的列表中没有添加任何项目…这可能是因为
    $scope.spitletab=[]
    的初始化吗?