【发布时间】:2017-06-15 08:55:53
【问题描述】:
我配置了action cable,现在想用下面的js函数
$('.scroll-bar').scrollTop(row);
提交消息后向下滚动聊天
所以我尝试在app/assets/channels/messages.js 和app/assets/javascripts/room.js 中都包含之前的代码。
问题是在我执行app/assets/channels/messages.js 之前,html 没有附加新的<p></p> 标记。
App.messages = App.cable.subscriptions.create('MessagesChannel', {
received: function(data) {
$("#messages").removeClass('hidden')
return $('#messages').append(this.renderMessage(data));
},
renderMessage: function(data) {
return "<p> <b>" + data.user + ": </b>" + data.message + "</p>";
}
});
这是我的聊天消息,我无法在不存在的行上运行.scrollTop(row)。
我测试过,<p>标签加在messages.js之后。
我找到了解决此问题的临时解决方案,方法是评论 return $('#messages').append(this.renderMessage(data)); 的返回并在 .scrollTop(row) 方法之后调用。该解决方案有效,但这种方式仅将 html 附加到没有 <p> 标记的页面。不知何故,renderMessage 无法正常工作。
我可以提供任何信息
非常感谢 法布里齐奥·贝托利奥
【问题讨论】:
标签: javascript jquery ruby-on-rails ruby-on-rails-5 actioncable