Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器在Ember JS中发送了事件_Javascript_Ember.js_Server Sent Events - Fatal编程技术网

Javascript 服务器在Ember JS中发送了事件

Javascript 服务器在Ember JS中发送了事件,javascript,ember.js,server-sent-events,Javascript,Ember.js,Server Sent Events,我有一个应用程序,在这个程序中,点击一个链接,浏览器需要在服务器上触发一些东西,而客户端应该会得到它的进展。SSE是一个很好的候选人,但我无法在ember(我正在学习)中弄清楚这一点 我尝试使用模板execute: <script type="text/x-handlebars" data-template-name="execute"> <script> if(typeof(EventSource)!=="undefined") {

我有一个应用程序,在这个程序中,点击一个链接,浏览器需要在服务器上触发一些东西,而客户端应该会得到它的进展。SSE是一个很好的候选人,但我无法在ember(我正在学习)中弄清楚这一点

我尝试使用模板
execute

<script type="text/x-handlebars" data-template-name="execute">
    <script>
       if(typeof(EventSource)!=="undefined") {
          var source=new EventSource("/execute/flow");
          source.onmessage=function(event) {
              if(event.data == 'end') {
                source.close();
              }else{
                document.getElementById("flow_result").innerHTML+= event.data + "<br>";
              }
          };
       } else {
          document.getElementById("flow_result").innerHTML="Sorry, your browser does not support server-sent events...";
       }
    }
    <script>
<script>

if(typeof(EventSource)!=“未定义”){
var source=neweventsource(“/execute/flow”);
source.onmessage=函数(事件){
如果(event.data=='end'){
source.close();
}否则{
document.getElementById(“flow_result”).innerHTML+=event.data+“
”; } }; }否则{ document.getElementById(“flow_result”).innerHTML=“对不起,您的浏览器不支持服务器发送的事件…”; } }
页面上的某个地方有一个链接,使用
{{{#link to'execute}}
触发此模板。但不知何故,这个SSE javascript根本没有执行

问题:

1) 我做错了什么?(我怀疑我不应该将javascript代码放入模板中)
2) 有没有将SSE与ember js结合使用的好例子?

不要在模板中传递代码。 在应用程序的控制器和路由中处理您喜欢的任何操作。 对于sse,您可以执行以下操作:

App.ApplicationController = Ember.Controller.extend({
  init: function() {
    var eventSource;
    eventSource = new EventSource(your-event-source);
    return eventSource.addEventListener(your-event-to-listen, function(e) {
      var data;
      return data = $.parseJSON(e.data);
      //Do whatever else you want in here with your data
    });
  }
});

为了确保视图中的后续更改得到更新,我将修改此答案,并提及。