5

我正在尝试将 JS 文件插入到视图中,但它们以错误的顺序插入。

在我的 default.ctp 我有这个

$this->Html->script(array(
    'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    'global'
), array('inline'=>false));

echo $this->fetch('script');

在我看来,我有这个:

$this->Html->script('jquery.fancybox.pack', array('inline' => false));

但是当我查看源代码时,它是这样的:

<script type="text/javascript" src="/js/jquery.fancybox.pack.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="/js/global.js">

这显然是错误的顺序,所以 jQuery 插件不起作用。

我究竟做错了什么?

4

3 回答 3

6

通常,我在布局中回显出所需的脚本(而不是将它们添加到缓冲区),然后是脚本块(缓冲脚本)。这可确保首先回显每个视图所需的脚本。你的 default.ctp 看起来像这样:

// get echoed immediately
echo $this->Html->script(array(
    'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    'global'
));
// everything else from the view, echoed after
echo $this->fetch('script');

或者,您可以为前面的脚本指定一个特殊块。

echo $this->Html->script(array(
    'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js',
    'global'
), array('block' => 'firstScripts');
echo $this->fetch('css');
echo $this->fetch('firstScripts');
echo $this->fetch('script');
于 2012-03-28T14:15:24.327 回答
2

不确定您在构建当前系统上投入了多少时间,但您可以尝试使用分层资源加载器助手,而不是标准的 cakePHP 助手。

不幸的是,标准资源加载器无法处理不同文件之间的依赖关系,只能按照您提供它们的顺序加载它们(视图在布局之前解析)。

于 2012-03-28T09:28:38.230 回答
0

在头部使用这个。

html->脚本('jquery-1.11.1.js') ?>
获取('脚本')?>
于 2015-04-29T09:42:54.477 回答