Angular Provider,包含来自websocket的数据

时间:2016-09-05 07:51:51

标签: angularjs websocket

我想在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;

});

1 个答案:

答案 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

相关问题