Передать массив из контроллера в заводскую ошибку

#angularjs #angularjs-service #angularjs-controller #angularjs-factory

#angularjs #angularjs-сервис #angularjs-контроллер #angularjs-завод

Вопрос:

У меня есть завод, который используется angular-websocket для подключения к серверной части, и мне нужно передать ему информацию с моего контроллера, чтобы он отправил эту информацию, и я хочу передать ее в виде массива. Фабрика как таковая:

 .factory('registerService', function($websocket) {
  var dataStream = $websocket('ws://localhost:3000'); //websocket
  dataStream.onOpen(function() {
    console.log('in');
    this.sendId = function(data) {
    console.log('data: ' data);
    };
  })
  dataStream.send(function(message) {
    //send info to backend
  });
})
 

И контроллер как таковой:

 .controller("registerController", function($scope,$stateParams,$ionicPopup,$state,registerService) {
  $scope.registerService = registerService;
  $scope.signUp = function() {
        registerBox = [];
        registerBox.push('Register')
        registerService.sendId(registerBox);
  };
})
 

Однако я получаю сообщение об ошибке: registerService.sendId не является функцией.
В чем проблема, пожалуйста?

Комментарии:

1. Вы не return редактировали свой сервис.

Ответ №1:

      .factory('registerService', function($websocket) {
          var dataStream = $websocket('ws://localhost:3000'),
              _this = this;

          dataStream.onOpen(function() {
            console.log('in');
            _this.sendId = function(data) {
               console.log('data: ' data);
            };
          })
          dataStream.send(function(message) {
            //send info to backend
          });

         return _this;
   });