如何使用requirejs在角度应用程序中要求dojox?
我必须面对一个巨大的angularjs应用程序,UI部分将由dojo实现。
我的项目是一个angularjs应用程序,其结构如下所示:
在文件index.html中
<script data-main="scripts/main" src="scripts/libs/require.js"></script>
在文件main.js中
require.config({
baseUrl: "scripts",
paths: {
......
, dojo: "libs/dojo/dojo"
, dijit: "libs/dojo/dijit"
, dojox: "libs/dojo/dojox"
}
});
在文件sub-app.js中
define([...], function (...) {
var app = angular.module("subApp",["ngRoute"]);
app.config([
//config something
]);
app.run([
// do something in runing phase
]);
return app;
});
在文件sub-directive1.js中,我需要dijit / Calendar为sub-directive1创建一个Calendar小部件。 它运行良好,requirejs可以轻松找到“dijit / Calendar”。
define([
"./sub-app"
], function(app) {
app.directive("subDirective1",
function() {
return {
restrict: "E",
replace: true,
link: function (scope, iElement, iAttrs){
......
require([
"dijit/Calendar",
"dojo/date",
"dojo/domReady!"
], function(Calendar, date){
new Calendar({
value: new Date(),
isDisabledDate: function(d){
var d = new Date(d); d.setHours(0, 0, 0, 0);
var today = new Date(); today.setHours(0, 0, 0, 0);
return Math.abs(date.difference(d, today, "week")) > 0;
}
}, iElement);
});
}
}
}
);
});
在文件sub-directive2.js中,我需要dojox / charting / Chart来在子指令2中创建一个列图。 但它无法工作,我的浏览器输出: 无法加载资源:服务器响应状态为404(未找到)http:// localhost:63342 / public / scripts / libs / dojo / dojox.js
define([
"./sub-app"
], function(app) {
app.directive("subDirective2",
function() {
return {
restrict: "E",
replace: true,
link: function (scope, iElement, iAttrs){
......
require(["dojox/charting/Chart",
......
"dojo/ready"],
function(Chart, Default, Lines, Wetland, ready){
ready(function(){
var c = new Chart("chart3");
.....
iElement.append(chart1);
});
});
}
}
}
);
});
我想知道为什么requirejs可以正确地找到diji路径,但没有正确地找到dojox路径? 它认为dojox是一个JavaScript文件而不是目录。 这让我感到困惑!
好。 没有人回应。 我自己克服了它。 当我们想要使用requirejs来要求dojo / dijit / dojox时,我们应该执行2个步骤
使用软件包配置dojo不使用路径
软件包:[{name:'dojo',位置:'libs / dojo / dojo'},{name:'dijit',位置:'libs / dojo / dijit'},{name:'dojox',位置:'libs / dojo / dojox'}],
上一篇: How to use requirejs to require dojox in angular application?