我正在布局视图中调用javascript函数。我对不同的视图有一个通用的布局,但是特别是有2个视图,我想检查var data = ['bob', 'charli', 'kate'],
l = data.length,
lastIndex = -1,
counter = 0;
intervalID = setInterval(getRandom, 1000);
function getRandom() {
do {
var r = Math.floor(Math.random() * l);
} while (r === lastIndex);
lastIndex = r;
console.log('data: ' + data[r] + ' | random_number: ' + r);
if(++counter === 5) {
clearInterval(intervalID);
}
}
。在布局中,我可以定义脚本,但它们可以在我的整个应用程序中使用,所以我只想在2个视图中提及它们。我可以制作2个javascript文件,并将它们包含在各自的视图中,但是我认为这不是一个好选择。
我将如何处理此问题?
我有两个视图screen width
和mobile-view
。
答案 0 :(得分:0)
选项1:
将JavaScript放入一个小的.js
文件中,并使用echo $this->Html->script('...');
将该文件包含在特定视图中
选项2:
创建一个包含JavaScript(echo $this->Html->scriptBlock('...');
)的元素,并通过echo $this->element('...');
从每个视图中引用该元素
答案 1 :(得分:0)
使用HtmlHelper,您可以缓冲JavaScript脚本块并将其输出到<head>
或最好在<body>
的末尾,如下所示:
您的视图
// Start a script block to be echoed at the end of the <body>
$this->Html->scriptStart(['block' => 'bottomScripts']);
echo "alert('Hi, it is JavaScript.');";
$this->Html->scriptEnd();
除非您输出在布局或视图中名为bottomScripts
的块中缓冲的脚本和/或脚本块,否则什么都不会发生:
您的布局
…
<?= $this->fetch('bottomScripts'); ?>
</body>
</html>