非常感谢您尝试 PubNub AngularJS API!我会尽力
提供一些帮助。之间有一点区别
在本例中为 PubNub JS API 和 PubNub AngularJS API。
背景
在幕后,PubNub JS APIhistory()
方法立即返回,
并在检索给定的历史记录“页面”时调用回调。
AngularJS API 在寻求简化这种交互的过程中并没有
接受回调 - 相反,它调用$rootScope.$broadcast()
对于每条消息
在返回的历史有效负载中。
在此版本的 AngularJS API 中,目前无法“进入”
'ngHistory' 方法提供回调。不过有2个解决方案
可供您使用:第一个一直存在,第二个是我刚刚添加的
根据您的反馈。
解决方案
1)请参阅此处的代码笔(http://codepen.io/sunnygleason/pen/afqmh http://codepen.io/sunnygleason/pen/afqmh)。 PubNub AngularJS API 中有一个“逃生舱口”,可让您直接调用 JS API 以实现高级用例,称为jsapi
。您可以致电PubNub.jsapi.history({channel:theChannel,limit:theLimit,callback:theCallback})
。唯一要记住的是,这不会将消息事件触发到 $rootScope,您将需要调用$rootScope.$apply()
or $scope.$apply()
以确保您所做的任何更改$scope
回调函数内的内容正确传播到视图。
2)请参阅此处的代码笔(http://codepen.io/sunnygleason/pen/JIsek http://codepen.io/sunnygleason/pen/JIsek)。如果您更喜欢基于承诺的方法,我刚刚添加了一个ngHistoryQ()
函数到 PubNub AngularJS API 版本 1.2.0-beta.4。这将让您编写如下代码:
PubNub.ngHistoryQ({channel:theChannel,limit:theLimit}).then(function(payload) {
payload[0].forEach(function(message) {
$scope.messages.push(message);
}
});
您可以使用“bower install pubnub-angular”安装最新版本的 AngularJS SDK。
使用这些解决方案中的任何一个,您应该能够显示和隐藏微调器
因此。唯一的区别在于#2,您需要编写如下代码:
var historyPromise = PubNub.ngHistoryQ({channel:theChannel,limit:theLimit});
showSpinner();
historyPromise.then(function(payload) {
// process messages from payload[0] array
hideSpinner();
});
这有帮助吗?让我知道你的想法。再次非常感谢您尝试这个。