我正在尝试学习KendoUI和RequireJS。
我创建了一个简单的应用程序,该应用程序在加载时显示窗口。
我的require.config看起来像这样:
require.config({
paths: {
jQuery: [
'http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min',
'libs/jquery-2.1.0'
],
underscore: [
'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min',
'libs/underscore'
],
handlebars: [
'http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0-alpha.2/handlebars.min',
'libs/handlebars'
],
k: 'libs/kendo',
text: 'libs/require/text',
async: 'libs/require/async',
templates: 'templates'
},
shim: {
'jQuery': {
exports: '$'
},
'underscore': {
exports: '_'
},
'handlebars': {
exports: 'Handlebars'
},
"k": {
deps: ["jQuery"]
}
}
});
而我的主要:
require(['jQuery', 'handlebars', 'helpers/handlebarsHelper', 'k/kendo.notification', 'k/kendo.window'], function ($, Handlebars, hh) {
hh.init();
var context = {
people: [{
firstName: "Yehuda",
lastName: "Katz"
}, {
firstName: "Carl",
lastName: "Lerche"
}, {
firstName: "Alan",
lastName: "Johnson"
}]
};
var x = hh.getTemplate('test');
$('#container2').html(x(context));
var x = hh.getTemplate('test');
$('#container3').html(x(context));
var popupNotification = $("#popupNotification").kendoNotification({
position: {
top: 20,
right: 20
}
}).data("kendoNotification");
window.setInterval(function () {
var d = new Date();
popupNotification.show(kendo.toString(d, 'HH:MM:ss.') + kendo.toString(d.getMilliseconds(), "000"), "error");
}, 7000);
$("#window").kendoWindow({
width: "500px",
modal: true,
resizable: false,
actions: ["Close"],
title: "About Josef Hoffmann",
visible: false
}).data("kendoWindow").center().open();
});
我的应用程序可以运行,但是有时会出现错误
Uncaught ReferenceError: jQuery is not defined
requirejs具有指定垫片的选项,但不适用于KendoUI,可能是我做错了。
所以我的问题是:
如何配置requireJS以使其与KendoUI一起使用?
最佳答案
我得到了这个工作,我不得不更改垫片配置:
shim: {
'jQuery': {
exports: '$'
},
'underscore': {
exports: '_'
},
'handlebars': {
exports: 'Handlebars'
},
"kendo/kendo.core": {
deps: ["jQuery"]
}
}
kendo.core取决于jQuery,因此我问题中的代码这一部分引起了错误。