extjs4 树实现问题

默爆 2011-08-08 07:56:40
treePanel代码:

Ext.define('SMS.view.Menu',{
extend: 'Ext.tree.Panel',
alias: 'widget.smsmenu',
requires:['SMS.store.Menus'],
initComponent : function(){
var tree = this;
Ext.apply(this,{
id: 'menu-panel',
iconCls:'icon-menu',
margins : '0 0 -1 1',
region:'north',
border : false,
enableDD : false,
split: true,
width : 212,
height:360,
minSize : 130,
maxSize : 300,
rootVisible: false,
containerScroll : true,
//collapsible : true,
autoScroll: false,
store:Ext.create('SMS.store.Menus'),
dockedItems: [{
xtype: 'toolbar',
items: [{
text: '展开',
iconCls: 'expand',
handler: function(){
tree.expandAll();
}
}, {
text: '折叠',
iconCls: 'collapse',
handler: function(){
tree.collapseAll();
}
}]
}]
});
this.callParent(arguments);
}
})


store代码

Ext.define('SMS.store.Menus',{
extend: 'Ext.data.TreeStore',
proxy: {
type: 'ajax',
url: 'users.json'
},
root: {
expanded: true,
}
})


现在要从users.json中读出数据生成树,请问各位大侠users.json的格式应该是怎样?为什么我按照例子来咋就不能读出来?
...全文
491 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
默爆 2011-08-10
  • 打赏
  • 举报
回复
呵呵,问题解决了,原来我是用extjs4的MVC方式,所以在不同文件夹下定义了Panel和Store,然后我把user.json文件放在了Store文件夹下,而在生成控件的时候是在根目录下定义的app.js文件来生成,我想:可能他生成的时候读文件是按app.js所在位置来读,后来我把user.json放到根目录下,果然搞定了。呵呵。。。所以如果是实用JAVA的Action,直接由Action返回的话,我想就不会有问题了。所以以后要注意目录问题。
keithcai 2011-08-09
  • 打赏
  • 举报
回复
楼上的格式是对的~
楼主我之前跟你遇到同样的问题,刚学EXTJS4当时也是想做一个TREE,然后写一个JSON文件从里面读,做一个例子看看。
但是用上面的格式的话~火狐WEB控制台的错误提示是‘语法错误’,如果把[]去掉的话就是错误‘未组织好’。
我找了好久最终都没有找到错误在哪里,最后就跟做服务器端的同事沟通~让他给我写一个桩来做测试,返回以上格式JSON串,结果就显示出来了。
最后我想可能是我的JSON文件格式有问题(我是用记事本创建的然后改后缀命为.json),不知道大神们是怎么创建JSON文件了~我找了很久没找到,知道的指导一下。
在这里我想说的是~你做TREE的话应该是想动态获得树的结构,那样就配合着服务器端一起做吧~
如果是静态的树~直接写到store里面就行了。
好像没有解决你的问题是吧~分享一下我的经验,希望对你有帮助。
还有就是网上很多资料都是EXTJS2.2或者3的,EXTJS4的资料很少,我给你推荐一个网址,讲的很好:
http://mhzg.net/effects/ext/index.html
还有一个学习资料库,虽然不是EXTJS4的,但是里面的每一个例子的设置,属性,方法都有注释~我把它当做中文API来看了:
http://www.docin.com/mydoc-2424998-1.html&folderId=87921
希望都对你有帮助~加个好友一起学习吧
大哥-你真棒 2011-08-09
  • 打赏
  • 举报
回复
我不习惯用继承的方式做、贴一段我的树吧,很简单
TimesLeader.resMgr = Ext.create('Ext.tree.Panel', {
title: '',
frame:true,
useArrows: true,
root:treeData,//treeData是向后台请求得到的json格式数据

}
大哥-你真棒 2011-08-09
  • 打赏
  • 举报
回复
[
{ text: "detention", leaf: true },
{ text: "homework", expanded: true, children: [
{ text: "book report", leaf: true },
{ text: "alegrbra", leaf: true}
] },
{ text: "buy lottery tickets", leaf: true }
]

这个api上有
大哥-你真棒 2011-08-09
  • 打赏
  • 举报
回复

checked: null
children: Array[2]
code: null
guid: "00000000-0000-0000-0000-000000000000"
icon: null
id: "root"
leaf: false
parent_id: null
text: "root"

字节点一样
keithcai 2011-08-09
  • 打赏
  • 举报
回复
最新版的火狐菜单工具里有个WEB控制台~你开起来~跑一下看看是不是跟我一样也出错
默爆 2011-08-09
  • 打赏
  • 举报
回复
2楼同志能把你的treeData的代码也弄出来吗?
默爆 2011-08-09
  • 打赏
  • 举报
回复
呵呵,楼上的我的例子就是从http://mhzg.net/effects/ext/index.html 网站上下来的,里面的Extjs4开发笔记(三)——菜单的实现 文章的树,我是直接用user.json文件读,但是读不出。我的火狐是不报错的,但是什么也不显示。

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧