用ExtJs的xmlReader读取一个xml文件,现在是文件能取到,但是文件的内容没有读进store里面,以下是写的代码以及一些调试的信息,还请论坛大虾赐教啊~~~主要的java script文件
//动态调用另外一个JS文件中的Model
Ext.Loader.setConfig({
enabled : true,
paths : {
common:'JS/common'
}
});
//小弟试过,如果在动态调用其它JS中的Model时,如果不先实例化,会报错
//若各位大虾认为不对,还请大虾们给个解决方法呀~~~
var a = Ext.create('common.teacher',{});
var b = Ext.create('common.student',{});
//按照ExtJs官方文档写的一个
var store = Ext.create('Ext.data.Store', {
model: 'common.teacher',
autoLoad: true,
proxy: {
type: 'ajax',
url : 'teacher.xml',
reader: {
type: 'xml',
root: 'teacherList',
record: 'teacher',
implicitIncludes:true
}
}
});
//读入XML文件
store.load();
//遍历store并且查看store中的数据
store.each(function(temp){
//运用hasMany中的函数取得子store
var pp = temp.students();
//输出子store,这里是为了方便在firebug里面查看东西,加的一步
alert(pp);
});
动态调用的java script文件:
Ext.define('common.teacher',{
extend:'Ext.data.Model',
fields:['name'],
hasMany:{model:'common.student', name:'students'}
});
Ext.define('common.student',{
extend:'Ext.data.Model',
fields:['name'],
belongsTo:{type:'belongsTo', model:'common.teacher'}
});
这是一个XML的源文件:
<?xml version="1.0" encoding="UTF-8"?>
<teacherList>
<teacher>
<name>teacher1</name>
<students>
<name>student1_1</name>
</students>
</teacher>
</teacherList>以下是用firebug进行调试时的一些截图:
已经读取xml文件,并且已经读取到teacher但是student并没有读取到:这个是一个http响应:
哎,这个东西弄得偶头疼,还请大虾们指点指点,才刚学ExtJs不久,现在跟着uspcat论坛的视频在走……
//动态调用另外一个JS文件中的Model
Ext.Loader.setConfig({
enabled : true,
paths : {
common:'JS/common'
}
});
//小弟试过,如果在动态调用其它JS中的Model时,如果不先实例化,会报错
//若各位大虾认为不对,还请大虾们给个解决方法呀~~~
var a = Ext.create('common.teacher',{});
var b = Ext.create('common.student',{});
//按照ExtJs官方文档写的一个
var store = Ext.create('Ext.data.Store', {
model: 'common.teacher',
autoLoad: true,
proxy: {
type: 'ajax',
url : 'teacher.xml',
reader: {
type: 'xml',
root: 'teacherList',
record: 'teacher',
implicitIncludes:true
}
}
});
//读入XML文件
store.load();
//遍历store并且查看store中的数据
store.each(function(temp){
//运用hasMany中的函数取得子store
var pp = temp.students();
//输出子store,这里是为了方便在firebug里面查看东西,加的一步
alert(pp);
});
动态调用的java script文件:
Ext.define('common.teacher',{
extend:'Ext.data.Model',
fields:['name'],
hasMany:{model:'common.student', name:'students'}
});
Ext.define('common.student',{
extend:'Ext.data.Model',
fields:['name'],
belongsTo:{type:'belongsTo', model:'common.teacher'}
});
这是一个XML的源文件:
<?xml version="1.0" encoding="UTF-8"?>
<teacherList>
<teacher>
<name>teacher1</name>
<students>
<name>student1_1</name>
</students>
</teacher>
</teacherList>以下是用firebug进行调试时的一些截图:
已经读取xml文件,并且已经读取到teacher但是student并没有读取到:这个是一个http响应:
哎,这个东西弄得偶头疼,还请大虾们指点指点,才刚学ExtJs不久,现在跟着uspcat论坛的视频在走……
extend:'Ext.data.Model',
fields:['name'],
proxy: {
type: 'ajax',
url:'Test.TestApplication.TestOneToMany.cls',
reader: {
type: 'xml',
//root: 'teacherList'
record:'teacher'
}
},
hasMany:{model:'common.student', name:'students'}
});
Ext.define('common.student',{
extend:'Ext.data.Model',
proxy: {
type: 'ajax',
url:'Test.TestApplication.TestOneToMany.cls',
reader: {
type: 'xml',
root: 'students',
record:'name'
}
},
fields:[{name:'name',mapping:'/'}],
belongsTo:'common.teacher'
});
var tstore = Ext.create('Ext.data.Store', {
storeId:'simpsonsStore',
model:'common.teacher'
});
tstore.load({
callback:function(records){
console.log(records);
alert(records.length);
alert(records[0].students().count());
}
});需要给两个model都添加代理
我把xml数据给加了一条:
<?xml version="1.0" encoding="UTF-8"?>
<teacherList>
<teacher>
<name>teacher1</name>
<students>
<name>student1_1</name>
</students>
<students>
<name>student1_2</name>
</students>
</teacher>
</teacherList>
程序最后算出students只有一个,这个…………还有一个问题是:我只想在A.JS中定义model,而不设定具体的数据来源,在B.JS中来调用A.JS的Model。我认为这样的话,可以实现Model的共用性,以后如果做项目之类的,我只需要去更改A.JS中的Model就可以了。
extend:'Ext.data.Model',
proxy: {
type: 'ajax',
url:'Test.TestApplication.TestOneToMany.cls',
reader: {
type: 'xml',
root:'teacher',
record:'students'
}
},
fields:[{name:'name',mapping:'students>name'}],
belongsTo:'common.teacher'
});你可以在调用的时候设置model的proxy setProxy(params)
按照楼上的解释,还是不行,看还有么其它的方法,先把分给你吧,只有一人回,其它人都不甩我~~
(function(){
Ext.onReady(function(){
Ext.define('common.teacher',{
extend:'Ext.data.Model',
fields:['name'],
proxy: {
type: 'ajax',
url:'teacher.xml',
reader: {
type: 'xml',
record:'teacher'
}
},
hasMany:{model:'common.student', name:'students'}
});
Ext.define('common.student',{
extend:'Ext.data.Model',
proxy: {
type: 'ajax',
url:'teacher.xml',
reader: {
type: 'xml',
root:'teacher',
record:'students'
}
},
fields:[{name:'name',mapping:'students>name'}],
belongsTo:'common.teacher'
});
var tstore = Ext.create('Ext.data.Store', {
storeId:'simpsonsStore',
model:'common.teacher'
});
tstore.load({
callback:function(records){
console.log(records);
alert(records.length);
alert(records[0].students().count());
}
});
})
})();
<teacher>
<name>teacher1</name>
<students>
<name>student1_1</name>
<name>student1_2</name>
</students>
</teacher>
<teacher>
<name>teacher2</name>
<students>
<name>student2_1</name>
<name>student2_2</name>
</students>
<students>
<name>student2_1</name>
<name>student2_2</name>
</students>
</teacher>
</teacherList>你可以用这样的xml,然后用之前的model去匹配一般情况下包含list会有一个标签标签下是重复的list数据
貌似还是不行,弱弱的问一句,一般在做项目的时候,对于后台传过来的XML数据,你们是直接解析,还是建Model,将XML数据读进Model.再进行下一步?