我在使用Extjs4 librairie时遇到了一些问题。 我想使用treeEditor组件。
Firebug错误:
错误:未捕获的异常: Ext.Loader未启用,所以 依赖关系无法解决 动态。缺少必修课: Ext.tree.TreeNode
我的代码:
Ext.require([
'Ext.form.*',
'Ext.grid.*',
'Ext.tree.*',
'Ext.data.*',
'Ext.util.*',
'Ext.loader.*',
'Ext.state.*',
'Ext.layout.container.Column',
'Ext.tab.TabPanel'
]);
Ext.onReady(function(){
// shorthand
Ext.QuickTips.init();
var tree = Ext.create('Ext.tree.TreePanel', {
animate:false,
enableDD:false,
// loader: new Tree.TreeLoader(), // Note: no dataurl, register a TreeLoader to make use of createNode()
lines: true,
rootVisible:false,
// selModel: new Ext.tree.MultiSelectionModel(),
containerScroll: false
});
// set the root node
var root = Ext.create('Ext.tree.TreeNode',{
text: 'Autos',
draggable:false,
id:'source'
});
tree.on('contextmenu',showCtx);
tree.on('click',function(node,e){node.select();return false;});
// json data describing the tree
var json = [
{"text" : "1","allowEdit" : true, "id" : 300, "leaf" : false, "cls" : "folder", "children" : [
{"text" : "11","allowEdit" : true, "id" : 3000, "leaf" : false, "cls" : "folder","children" :[
{"text" : "111","allowEdit" : true, "id" : 300, "leaf" : false, "cls" : "folder","children" :[
{"text" : "1111","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"},
{"text" : "1112","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"},
{"text" : "1113","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"}
]},
{"text" : "112","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"},
{"text" : "113","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"}
]},
{"text" : "12","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"},
{"text" : "13","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"}
]},
{"text" : "2","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file"},
{"text" : "3","allowEdit" : true, "id" : 300, "leaf" : true, "cls" : "file",iconCls:'node'}
];
for(var i = 0, len = json.length; i < len; i++) {
root.appendChild(tree.getLoader().createNode(json[i]));
}
var ge = Ext.create('Ext.tree.TreeEditor',tree,{},{
allowBlank:false,
blankText:'Nom du dossier',
selectOnFocus:true,
cancelOnEsc:true,
completeOnEnter:true,
ignoreNoChange:true,
updateEl:true
});
/*ge.on('beforestartedit', function(){
if(!ge.editNode.attributes.allowEdit){
return false;
}
});*/
tree.setRootNode(root);
tree.render();
root.expand(true);
});
谢谢:)
答案 0 :(得分:50)
错误是由于未启用Loader。您可以通过以下方式启用Ext.Loader:
Ext.Loader.setConfig({enabled:true});
您需要在onReady
方法的开头调用此方法。
答案 1 :(得分:2)
这在ExtJs 4中对我有用。只需将Ext.Loader.setConfig({enabled:true});
添加到app.js的顶部。
答案 2 :(得分:1)
真正的问题是你正在使用ext-debug.js,ext.js
改为使用:ext-all.js或ext-dev.js
关于动态加载的阅读
index.html示例:
<html>
<head>
<title>Hello Ext</title>
<link rel="stylesheet" type="text/css" href="ext-4/resources/css/ext-all.css">
<script type="text/javascript" src="ext-4/ext-dev.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>
在该示例中,您不需要启用动态加载,因为动态加载它用于开发环境。 ext-all.js,ext.js用于部署。 ext-all-debug.js和ext-debug.js用于部署后的调试。
MVC和动态加载在部署中没用,因为你必须有一个由sencha cmd(aka Sencha Tools)生成的文件。
答案 3 :(得分:1)
我看了这个,因为我是一名ExtJS新手而不得不退后一步。我还不清楚在OnReady电话会议上关于它的广义声明的说法。
版本5.0的Sencha API Docs网站上的以下内容也显示了此示例,以便很好地理解对Ext.Loader类的调用的放置。在我看来,它有点过分夸大了多个JavaScript标签。
<script type="text/javascript" src="ext-core-debug.js"></script>
<script type="text/javascript">
Ext.Loader.setConfig({
enabled: true,
paths: {
'My': 'my_own_path'
}
});
</script>
<script type="text/javascript">
Ext.require(...);
Ext.onReady(function() {
// application code here
});
</script>
我对自己的个人代码所做的更改我添加如下,它也运行良好。这非常简单。
Ext.Loader.setConfig({enabled:true});
Ext.application({
name : 'MyApp',
appFolder : 'app',
controllers : [
'MyApp.controller.item.Item'
],
autoCreateViewport : true
});
如果您遇到Loader问题,那么您可能也想查看Ext.require和Ext.exclude类,以了解这些类如何交互以加载您的自定义类。