Javascript Phoenix/EmberJS Websocket访问和操作
我有一个基本的Ember前端应用程序,它通过初始化器中的websocket连接到Phoenix后端。接下来,我希望能够使用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()函数放在初始值设定项中,并在组件操
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
我相信它也应该发送它?完美的解决方案!再次感谢!