hasMany关联和Ext.data.Store之间的区别是什么?
Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'}
]
});
var myStore = Ext.create('Ext.data.Store', {
model: 'User'
});
var user = Ext.create('User', {
id: 1, name: 'Eugene'
});
myStore.add(user);
alert(myStore.count());
ex2:hasMany
Ext.onReady(function(){
Ext.define('Company', {
extend: 'Ext.data.Model',
fields: [{
name: 'Title',
type: 'string'
},{
name: 'Date',
type: 'date',
dateFormat: 'd-m-Y'
}, {
name: 'Value',
type: 'int'
}],
associations: [{
type: 'hasMany',
model: 'Manager',
name: 'founders'
}]
});
Ext.define('Manager', {
extend: 'Ext.data.Model',
fields: [{
name: 'FirstName',
type: 'string'
}, {
name: 'LastName',
type: 'string'
}]
});
var company = Ext.create('Company', {
Title: 'Microsoft',
Date: '01-01-1974',
Value: 30000
});
company.founders().add({
FirstName: 'Bill',
LastName: 'Gates'
}, {
FirstName: 'Paul',
LastName: 'Allen'
});
company.founders().each(function (founder){
alert(founder.get('FirstName') + " "+founder.get('LastName'));
});
});
为什么要为坏人创建新机制?
答案 0 :(得分:0)
我认为你可能会混淆两者,说实话,他们是完全不同的东西。
商品强>
ExtJs商店基本上是一个聪明的数组,允许您维护一个列表/模型集合。引用文档:
Store类封装了Model对象的客户端缓存。 存储通过代理加载数据,并提供排序功能, 过滤和查询其中包含的模型实例。
模型通常与商店一起使用,基本上是商店 记录集合(模型派生类的实例)。
示例:商店公司包含20个公司模型,如下所示:
公司:
HasMany协会
HasMany是模型上的关联,非常类似于关系数据库。因此,您可能拥有公司模型和员工模型。公司可以有很多员工。
可以使用Associations API将模型链接在一起。最 应用程序处理许多不同的模型和模型几乎 永远相关。博客创作应用程序可能具有模型 用户和帖子。每个用户创建帖子。所以在这种情况下,用户可以 有多个帖子,但帖子只有一个用户创建它。 这被称为ManyToOne关系。
当你将这两件事结合起来时,你可以得到一个模型列表及其所有相关记录。因此,对于基本代码示例(伪代码),您可能会执行以下操作:
var companies = new App.stores.Companies(); // here is your collection of companies
companies.each(function(company) {
var employees = company.employees(); // here is where your hasMany comes in
// for each employee give a pay rise or something...
});
旁注:ExtJ中的关联并非没有问题,它们的功能可能有限,很难做到正确。很多人一开始往往会遇到问题,请参阅here。
Sencha Docs中的data package指南非常清楚地解释了这一点,这也是上述引文的来源。
希望这有帮助