Javascript 信息发布后,Rails操作电缆向下滚动
我配置了action cable,现在我想使用以下js函数Javascript 信息发布后,Rails操作电缆向下滚动,javascript,jquery,ruby-on-rails,ruby-on-rails-5,actioncable,Javascript,Jquery,Ruby On Rails,Ruby On Rails 5,Actioncable,我配置了action cable,现在我想使用以下js函数 $('.scroll-bar').scrollTop(row); 在提交信息后向下滚动聊天室 因此我尝试在app/assets/channels/messages.js和app/assets/javascripts/room.js中包含前面的代码 问题是直到我执行app/assets/channels/messages.js之后,html才添加新的/code>标记 App.messages = App.cable.subscript
$('.scroll-bar').scrollTop(row);
在提交信息后向下滚动聊天室
因此我尝试在app/assets/channels/messages.js
和app/assets/javascripts/room.js
中包含前面的代码
问题是直到我执行app/assets/channels/messages.js之后,html才添加新的/code>标记
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>";
}
});
App.messages=App.cable.subscriptions.create('MessagesChannel',{
接收:功能(数据){
$(“#消息”).removeClass('隐藏')
返回$('#messages').append(this.renderMessage(data));
},
renderMessage:函数(数据){
返回“”+data.user+”:“+data.message+””;
}
});
这是我的聊天信息,我无法在不存在的行上运行。scrollTop(行)
我进行了测试,在messages.js
之后添加了
标记
我找到了一个临时解决方案来解决这个问题,通过注释return fromreturn$('#messages').append(this.renderMessage(data))
并在.scrollTop(row)
方法之后调用。解决方案是可行的,但这样一来,只有html被附加到页面上,而没有
标记。。不知何故,renderMessage
无法正常工作
我可以得到任何信息
非常感谢
Fabrizio Bertoglio这是我的临时解决方案,无法正常工作,因为这样我就不会附加标记,而只附加文本
基本上就像这样,我只是附加了html,没有
“”+data.user+”:“+data.message+”“
您可以从下面的图片中看到消息不在
标记内
这就是我所做的,我在$('#messages').append(This.renderMessage(data))
之后注释了执行.scrollTop()
函数的返回
app/assets/channels/messages.js
App.messages = App.cable.subscriptions.create('MessagesChannel', {
received: function(data) {
$("#messages").removeClass('hidden');
$('#messages').append(this.renderMessage(data));
height = $('.scroll-bar')[0].scrollHeight;
$('.scroll-bar').scrollTop(height);
/*return $('#messages').append(this.renderMessage(data));*/
},
renderMessage: function(data) {
return "<p> <b>" + data.user + ": </b>" + data.message + "</p>";
}
});
我不清楚这个回调
方法是如何调用另一个方法的,应用程序流是如何的
这是我的临时解决方案,无法正常工作,因为这样我就不会附加标记,而只附加文本
基本上就像这样,我只是附加了html,没有
“”+data.user+”:“+data.message+”“
您可以从下面的图片中看到消息不在
标记内
这就是我所做的,我在$('#messages').append(This.renderMessage(data))
之后注释了执行.scrollTop()
函数的返回
app/assets/channels/messages.js
App.messages = App.cable.subscriptions.create('MessagesChannel', {
received: function(data) {
$("#messages").removeClass('hidden');
$('#messages').append(this.renderMessage(data));
height = $('.scroll-bar')[0].scrollHeight;
$('.scroll-bar').scrollTop(height);
/*return $('#messages').append(this.renderMessage(data));*/
},
renderMessage: function(data) {
return "<p> <b>" + data.user + ": </b>" + data.message + "</p>";
}
});
我不清楚这个回调
方法是如何调用另一个方法的,应用程序流是如何的