问题描述
所有通道都在文件夹javascript/channels
上创建,并且默认情况下,此路径的所有内部都已加载。
不需要全部,我只删除文件channels/index
,其中包含:
// Load all the channels within this directory and all subdirectories.
// Channel files must be named *_channel.js.
const channels = require.context('.',true,/_channel\.js$/)
channels.keys().forEach(channels)
但是如何在我需要的页面上要求我的频道?
在我需要的页面上使用= javascript_pack_tag "channels/my_channel"
无效。
哪些是最佳做法?如何保留许多渠道,仅在我需要的地方要求?
解决方法
Channel js文件(确切地说是频道订户)通常包含类似
的内容const channel_subscription = consumer.subscriptions.create({
channel: 'SomeChannel',received: function(data) {...}
});
订阅会在执行时创建(默认情况下会在页面加载时创建),但是您可以使其成为函数:
function connect_this_exact_channel() {
return consumer.subscriptions.create(...)
}
,并且仅在调用该函数时才会创建订阅。