Javascript 用彗星作角度功

Javascript 用彗星作角度功,javascript,angularjs,playframework-2.0,comet,Javascript,Angularjs,Playframework 2.0,Comet,我正在开发一个实时web应用程序,我使用angular作为javascript框架,在服务器端我使用play框架来制作实时应用程序,我使用comet技术,基本上我从服务器推送脚本 实际上,我正在尝试从服务器到angular控制器的脚本进行通信,我有点卡住了 这是我试过的 我的看法是: <div id="workStation" ng-controller="workStation"> .... <input type="text" id="

我正在开发一个实时web应用程序,我使用angular作为javascript框架,在服务器端我使用play框架来制作实时应用程序,我使用comet技术,基本上我从服务器推送脚本

实际上,我正在尝试从服务器到angular控制器的脚本进行通信,我有点卡住了

这是我试过的

我的看法是:

<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>   
问题是永远不会调用函数serverEvent。我从服务器推送的脚本只修改输入

<script>parent.document.getElementById('bridge').value = 'event';</script>
parent.document.getElementById('bridge')。值='event';
实际上,脚本完成了它的工作,因为我看到输入改变了它的值,但是我不能注意到这个改变

使用不同的技术,因为由于客户的需要,不可能使用websocket

注意:在控制器中,我做了很多与帖子无关的事情,因此我省略了,我真的需要注意更改


谢谢。

您可以通过以下方式获得控制器的作用域:

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

var cometListener=函数(事件){
angular.element($('#workStation')).scope().serverEvent(事件);
}
还有一件事,您应该注意的是,作用域是在页面加载之后初始化的,因此从作用域之外调用方法应该总是在页面加载之后进行。否则,您将根本无法进入范围

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