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()
之前工作,因此我的新项目位于列表的底部,而不是我想要的位置
问题
我希望以以下方式运行我的应用程序:
$scope.events
$scope.events
进行排序$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=[]
的初始化吗?