我想在AngularJS中创建一个从subscribe websocket返回数据的提供程序(或其他服务)。如何实时从我的提供商获取数据到范围?
样品:
app.provider('MyProvider', function () {
this.$get = function () {
var dataFromProvider ;
ws.subscribe('subscribeTopic', function (data) {
var dataFromProvider = data;
});
return {
dataFromProvider: dataFromProvider
}
}
});
app.controller('myCtrl', function ($scope, MyProvider) {
$scope.myData = MyProvider.dataFromProvider;
});
答案 0 :(得分:0)
使用RxJS Extensions for Angular构建服务。
app.provider('MyProvider', function () {
this.$get = function (rx) {
var subject = new rx.Subject();
ws.subscribe('subscribeTopic', function (data) {
subject.onNext(data);
});
return { subject: subject };
}
});
app.controller("myVm", function($scope, MyProvider) {
var subscription = MyProvider.subject.subscribe(function(data) {
$scope.data = data;
});
$scope.$on("$destroy", subscription.dispose);
});
rxSubject可以处理多个订户,并与所有标准rxJS过滤器和组合器配合使用。
例如,使用angular.rx.js的服务,请参阅this DEMO on PLNKR