我在我的extbase后端包含模块布局html中的不同资产。要初始化多个DataTables:
$(dataTables[i]).DataTable(dataTableOptions);
<f:be.container
enableClickMenu="false"
loadExtJs="false"
enableExtJsDebug="true"
>
<script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery-1.11.3.min.js')}"></script>
<script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery-ui.min.js')}"></script>
<script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery.dataTables.min.js')}"></script>
<script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/moment.min.js')}"></script>
<script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery.multiselect.min.js')}"></script>
<script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jstree.min.js')}"></script>
&#13;
但是在更新到TYPO3 7.6.15后,总是有
&#34; TypeError:$(...)。DataTable不是函数&#34;
错误。我尝试了不同的变化,但没有任何作用。我认为,问题将是后端模块中的jquery的noconflict版本。但我不知道,要解决这个问题。我希望你能帮助我
最好的注册 丹尼尔
答案 0 :(得分:2)
好吧,经过四处拼搏,我用Typo3 requirejs符号解决了我的问题。我认为,jQuery Typo3 noConflict标题包括将是问题,我不知道,为什么Typo3不使用她自己的命名空间,为他们的方法。但我认为,将所有我自己/遗留的js-librariers包含在requirejs中将是最佳实践。
首先,在你的js文件中定义(我的:BackendModule.js放在'EXT:my_extension / Resources / Public / JavaScript'中)所有先决条件/依赖项,必须包括:
define([
'jquery',
'TYPO3/CMS/MyExtension/jquery-ui-widgets',
'moment',
'TYPO3/CMS/MyExtension/jquery.multiselect.min',
'datatables', ], function($, widgets, moment,multiselect) {[YOUR CODE]});
命名空间'TYPO3 / CMS / MyExtension / jquery-ui-widgets'映射到路径:'EXT:my_extension / Resources / Public / JavaScript / jquery-ui-widgets.js'
之后,我必须在模板中包含我的Js-File:
<f:be.container
loadExtJsTheme="false"
enableExtJsDebug="false"
loadJQuery="false"
jQueryNamespace="defaultNoConflict"
includeRequireJsModules="{
0:'TYPO3/CMS/MyExtension/BackendModule'
}"