我想知道在调用ngHistory之前是否可以在pubnub通道中检索历史消息的计数。我正在使用Angularjs。
我需要显示加载器,直到加载消息历史记录。现在,由于pubnub将所有历史记录和聊天类型路由到单个事件,我需要在事件中隐藏加载器。但是,如果历史记录中没有消息,则会出现问题。由于事件至少未被调用一次,因此不会隐藏加载程序。如果我将用于隐藏微调器的代码放在事件之外,它将在加载历史记录之前很久就隐藏加载器。我已经尝试使用ngHistory的回调但它没有被触发。
如果我可以检索消息的数量,我可以在历史消息计数为0时隐藏加载器。
我使用以下代码:
$scope.limit = 50;
ActivityIndicator.showSpinner(); // to show a spinner
PubNub.ngHistory({
channel : $scope.channel,
limit : $scope.limit
});
$rootScope.$on(PubNub.ngMsgEv($scope.channel), function(ngEvent, payload) {
$scope.messages.push(payload.message);
ActivityIndicator.hideSpinner(); // to hide the spinner
});
问题是当没有消息时,事件不会触发,如果事件没有触发,则隐藏调整器永远不会被调用。
默认情况下,在pubnub中,它们是这样实现的。如果他们能够确保该事件至少被调用一次,那么问题就会得到解决。我查看了pubnub Angularjs库,我可以找到以下代码将消息路由到事件:
c.ngHistory = function(args) {
args.callback = c._ngFireMessages(args.channel); // to route messages to event
return c.jsapi.history(args);
};
如果我评论第二行并为此执行ngHistory调用回调:
PubNub.ngHistory({
channel : $scope.channel,
limit : $scope.limit,
callback : function(payload){
$scope.messages.push(payload.message);
ActivityIndicator.hideSpinner(); // to hide the spinner
}
});
然后代码工作正常。但是,不建议编辑库文件。我不应该这样做。你有什么其他想法来纠正这个问题吗?
答案 0 :(得分:2)
ngHistory()
方法截至目前,无法确定频道中的消息数量。但是,您可以使用limit
来电中的limit : 10
参数PubNub.ngHistory({ ... })
最多返回的消息。