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 Phoenix/EmberJS Websocket访问和操作_Javascript_Ember.js_Phoenix Framework - Fatal编程技术网

Javascript Phoenix/EmberJS Websocket访问和操作

Javascript Phoenix/EmberJS Websocket访问和操作,javascript,ember.js,phoenix-framework,Javascript,Ember.js,Phoenix Framework,我有一个基本的Ember前端应用程序,它通过初始化器中的websocket连接到Phoenix后端。接下来,我希望能够使用chan.push(“new_msg”,{body:“test”})向凤凰频道发送消息 显然,我无法从初始值设定项本身执行此操作,但这是唯一定义“chan”的地方,我不知道如何从其他位置访问它 我希望在来自{{input action=“sendMessage()”}的操作上发生这种情况,因此我尝试了几种方法,例如将sendMessage()函数放在初始值设定项中,并在组件操

我有一个基本的Ember前端应用程序,它通过初始化器中的websocket连接到Phoenix后端。接下来,我希望能够使用
chan.push(“new_msg”,{body:“test”})
向凤凰频道发送消息

显然,我无法从初始值设定项本身执行此操作,但这是唯一定义“chan”的地方,我不知道如何从其他位置访问它

我希望在来自
{{input action=“sendMessage()”}
的操作上发生这种情况,因此我尝试了几种方法,例如将
sendMessage()
函数放在初始值设定项中,并在组件操作中调用它等等。。。但是,每当我试图从另一个文件访问初始值设定项时(反之亦然),我都会收到一个错误,表明函数未定义。我知道不应该以这种方式使用初始值设定项。当然,我只是不知道还有什么地方可以放置代码,以便访问我定义的websocket连接


与此问题相关的大多数代码与您将在本指南中看到的内容相匹配:。不幸的是,这并没有包括如何从前端为初学者使用此websocket连接。

这听起来是一项服务工作,请参阅相应的文档。 该服务将有一个
chan
属性来保存频道和
sendMessage
操作,然后您只需将该服务注入正确的上下文中,并执行类似以下操作:

{{input action=(action service.sendMessage)}}

这是用来直接触发服务操作的。

您的操作语法错误,应该是
{{input action=“sendMessage”}
是的,我一直在使用这个语法。坏习惯。谢谢,太棒了!这完美地解决了所有问题!介意我问一个快速的语法问题吗?我需要向sendMessage函数传递和参数(作为消息的输入内容),但还不能准确地理解它。有什么想法吗?谢谢!您可以执行
(action service.sendMessage attributeName)
,并且将使用
attributeName
作为第一个参数调用
sendMessage
。如果您设置
value=attributeName
我相信它也应该发送它?完美的解决方案!再次感谢!