Задать вопрос
@mr_drinkens89

Как обновить данные по сокету?

Всем привет.
В ангуляре не силен, необходима помощь.
Для работы с сокетами использую https://github.com/AngularClass/angular-websocket
Есть директива faqAnswer, в которой указан шаблон
templateUrl: '/app/faq/directives/faq-answer.html',

Данные по сокетам идут, и я вывожу их в консоли в методе dataStream.onMessage (как в примере в либе, указанной выше)
Каким образом мне обновить (binding) данные, пришедшие по сокету, в шаблоне?
Пробовал таким образом:
module('app')
.directive('faqAnswer', faqAnswer)
.factory('faqSocket', function($websocket,$rootScope) {
          var dataStream = $websocket('wss://api.myserver.com/faq/');
          dataStream.onMessage(function(message) {
            $rootScope.$apply(function () {
                $rootScope.answer = message['data'];
          });
- данные выводятся, но, думаю, это как-то коряво и неправильно.

Заранее благодарю за помощь.
  • Вопрос задан
  • 145 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SergeyBugai
Трогать $rootScope не очень прально, как вариант сделать как то так
.factory('faqSocket', function($websocket,$rootScope) {
         var factory = {}
          var dataStream = $websocket('wss://api.myserver.com/faq/');
          dataStream.onMessage(function(message) {
            $rootScope.$apply(function () {
                factory.answer = message['data'];
          });

          factory.dataStream = dataStream ;

          return factory;
})


В самой директиве или выводите данные на прямую с фабрики или ставите вачера на переменную factory.answer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы