Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 信息发布后,Rails操作电缆向下滚动_Javascript_Jquery_Ruby On Rails_Ruby On Rails 5_Actioncable - Fatal编程技术网

Javascript 信息发布后,Rails操作电缆向下滚动

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

我配置了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.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 from
return$('#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>";
  }
});
我不清楚这个
回调
方法是如何调用另一个方法的,应用程序流是如何的