我尝试在converse.js聊天框中设置一些设置(标题,删除头像,聊天框宽度),然后再播放"渲染"并显示聊天框。
虽然没有明确说出来,但我认为" chatBoxInitialized"事件将在创建聊天框对象之后但在呈现和显示之前触发。
我发现的是,当我调用该事件的处理函数时,聊天框已经显示,所以很清楚我对" chatboxinitialized"的理解。不完整。在处理程序内部,我使用了聊天框对象中的可用方法,例如
chatbox.setChatBoxWidth(350);
chatbox.model.attributes.fullname = data;
设置聊天室属性但是当语句执行并具有瞬间效果时,一旦处理程序功能完成,就会有一些东西将这些值设置回来,并且框会重新呈现"并在我的功能运行之前显示。
是否有更合适的事件要注册,以便在聊天框渲染之前设置这些值?是否有更合适的"聊天框设置功能"可以用来正确设置大小这样的东西,并关闭头像,而不是直接进入DOM并在事后操纵?
任何帮助都将不胜感激。
答案 0 :(得分:0)
如果您查看代码,则会在聊天框的HTML已经呈现后看到chatBoxInitialized
被触发。
查看代码,我看不到在创建聊天框之后,但在呈现聊天框之前触发的任何事件。
但是,在converse.js的当前主分支(即将发布)中,您可以在创建聊天框后设置全名,然后它将正确显示。
然而你错了。使用Backbone.js,您必须使用get
和set
而不是attributes
属性。
所以这个:
chatbox.model.attributes.fullname = data;
必须更改为:
chatbox.model.set({'fullname': data});
关于设置聊天框宽度,我认为最好的方法是设置相关的Sass变量,请参见此处:
然后运行make css
以生成新的CSS。