我正在建立一个模块的预Prestashop,有一个前厅控制器。我想使用jQueryUI。
在包含的JQueryUI中的模块(扩展module类)的主php文件中,如下所示:
public function hookHeader()
{
$this->context->controller->addJqueryUI('ui.core');
$this->context->controller->addJqueryUI('ui.widget');
$this->context->controller->addJqueryUI('ui.mouse');
$this->context->controller->addJqueryUI('ui.slider');
}我正在检查我的标题,我看到所有的脚本都是按照正确的顺序包含的。(见图) jQuery本身工作正常。但是,当我调用一个jQueryUI方法时,它说这个方法是没有定义的。
我只是想让基本实例发挥作用,有两种不同的方式,两者都不起作用。
$(document).ready(function(){
$( "#date" ).datepicker();
});这也不起作用
$( function() {
$( "#date" ).datepicker();
} );它一直在说$(...).datepicker is not a function。
它看起来不像jQuery是包括两次,因为当我不调用任何UI方法时,它工作得很好。这只是一个“迁移”的问题,但是如果我重命名文件,使其不能包含,它会抛出大量不同的错误(其他函数突然发现未定义)。
另外,除了我的模块之外,我已经禁用了所有模块。同样的问题。
有趣的是
window.onload = function() {
if (typeof jQuery.ui !== 'undefined') {
alert("jquery ui is loaded!");
} else {
alert("not working");
}
}上面写着上膛了!
,可能出什么事了?
我怎么解决这个问题?

发布于 2016-12-15 11:45:03
您需要做的是指定加载数据报警器。
$this->context->controller->addJqueryUI('ui.datepicker');Prestashop中的jQuery UI为每个UI组件提供了不同的文件。因此,您需要指定要加载的组件。
在文件夹/js/jquery/ui中查看一下,您将看到哪些组件可用。
不需要指定ui.core, ui.mouse等(除非您只需要它们),因为它们是组件的依赖项,所以它们会自动加载,除非您在addJqueryUI方法中向false添加第三个参数。
每个组件的依赖项在媒体类中定义。
自动加载的对话框组件的依赖关系示例:
'ui.dialog' => array('fileName' => 'jquery.ui.dialog.min.js', 'dependencies' => array('ui.core', 'ui.widget', 'ui.position','ui.button'), 'theme' => true),发布于 2016-12-15 06:21:02
现在,通过使用来自Google的托管库,它已经修复了:
$this->context->controller->addCSS('https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css');
$this->context->controller->addJS('https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js');我有一种感觉,但一旦我再次包含其他模块,它就会崩溃。
https://stackoverflow.com/questions/41157078
复制相似问题