我有一个基本的Ember前端应用程序,它通过初始化程序中的websocket连接到Phoenix后端。接下来,我希望能够使用chan.push("new_msg", {body: "test"})
向Phoenix频道发送消息。
显然,我无法从初始化程序本身那里做到这一点,但这是唯一一个“chan'已定义,我不知道如何从其他位置访问它。
我希望这发生在来自{{input action="sendMessage()"}}
的动作上,所以我尝试了几个方法,例如将sendMessage()
函数放在初始化程序中并在组件操作中调用它等等......但是我尝试从另一个文件访问初始化程序(反之亦然)我得到一个错误,说明函数没有定义。我知道初学者不应该以这种方式使用,我只是不知道在哪里放置代码,以便我可以访问我定义的websocket连接。
与此问题相关的大部分代码都与本指南中的内容相符:http://chrismcg.com/2015/07/04/teaching-ember-cli-to-talk-to-phoenix-sockets/。不幸的是,这并没有涵盖如何从初学者的前端使用这个websocket连接。
答案 0 :(得分:2)
这听起来像是服务工作,请参阅http://guides.emberjs.com/v2.1.0/applications/services/的相应文档。
该服务将具有sendMessage
属性来保存频道,以及{{input action=(action service.sendMessage)}}
操作,然后您只需在正确的上下文中注入服务并执行类似于以下操作的内容:
class SignupViewExt(SignupView):
template_name = "account/signup_alternate.html"
使用closure actions直接触发服务的操作。