2014-10-09 4 views
1

Я разрабатываю веб-приложение в реальном времени, я использую угловую структуру как javascript, а на стороне сервера я использую платформу воспроизведения, чтобы сделать приложение реального времени, я использую comet technic, где в основном я выталкиваю скрипты с сервера.Выполнение угловых работ с кометами

Я на самом деле пытаюсь связаться со сценарием, который отжимается от сервера до углового контроллера, и я немного застрял.

Вот что я пробовал.

Мой Вид:

<div id="workStation" ng-controller="workStation">  
    ....  
    <input type="text" id="bridge" ng-change="serverEvent()" ng-model="bridge"> 
    <iframe hidden="hidden" id="messages" src="/register"></iframe> 
</div> 

Мой контроллер

var app = angular.module('debQApp',[]); 
app.controller('workStation'['$scope','$timeout','$interval','api','websocket','$http','$q',function($scope,$timeout,$interval,api,websocket,$http,$q) 
{ 
     .... 
     $scope.bridge = 'waiting'; 


     $scope.serverEvent = function() 
     { 
      console.log('Event'); 
     }; 
} 

Проблема заключается в том, что функция serverEvent никогда не называют. Сценарий, который я нажимаю с сервера, только модифицирует ввод.

<script>parent.document.getElementById('bridge').value = 'event';</script> 

На самом деле сценарий делает свою работу, потому что я вижу вход изменения его значения, но я не могу сделать угловое уведомление изменения.

Используйте другую технику, поскольку веб-сайт не является возможным из-за потребностей клиента.

Примечание: В контроллере я делаю много вещей, которые не имеют отношения к сообщению, поэтому я опустил, мне действительно нужно угловое уведомление об изменении.

Спасибо.

ответ

1

Вы можете получить объем контроллера с чем-то вроде этого:

<script> 
    var cometListener = function(event){ 
     angular.element($('#workStation')).scope().serverEvent(event); 
    } 
</script> 

Еще одна вещь, вы должны отметить, что прицелы инициализируются после загрузки страницы, поэтому при вызове метода из-за пределов область должна всегда выполняться после загрузки страницы. Иначе вы вообще не попадете в сферу действия.