将简单的视图模型与单个记录绑定
Binding a Simple Viewmodel with Single Record
我创建了 this fiddle 来展示我想做的事情。
基本上,我配置了一个只加载一条记录的 Store
(实际上它将是当前登录的用户)。但是,我似乎无法将任何东西正确绑定到该商店。我怎样才能让 {u.name}
正确输出?
代码如下:
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
Ext.application({
name : 'Fiddle',
launch : function() {
new Ext.Component({
renderTo: Ext.getBody(),
viewModel: {
stores: {
u: {
proxy: {
type: 'ajax',
url: 'user.json'
},
model: 'User',
autoLoad: true
}
}
},
bind: 'Test name: {u.name}'
});
}
});
尝试bind: 'Test name: {u.data.items.0.name}'
更新:
作为对此的解释 - u 是一个具有其属性的对象,因此尝试绑定到 u.name 实际上将绑定到 商店名称 属性。虽然商店没有名称 属性,但它始终为空。 Store接收到的数据放在data属性中。项目 属性 包含接收数据的原始数组等。
在您的 fiddle 中,您正在使用一家商店,而看起来您只需要一条记录。
使用 links
而不是 stores
应该效果更好,例如:
links: {
u: {
type: 'User',
id: 1
}
}
基于您的代码的工作示例:https://fiddle.sencha.com/#fiddle/uuh
我创建了 this fiddle 来展示我想做的事情。
基本上,我配置了一个只加载一条记录的 Store
(实际上它将是当前登录的用户)。但是,我似乎无法将任何东西正确绑定到该商店。我怎样才能让 {u.name}
正确输出?
代码如下:
Ext.define('User', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
Ext.application({
name : 'Fiddle',
launch : function() {
new Ext.Component({
renderTo: Ext.getBody(),
viewModel: {
stores: {
u: {
proxy: {
type: 'ajax',
url: 'user.json'
},
model: 'User',
autoLoad: true
}
}
},
bind: 'Test name: {u.name}'
});
}
});
尝试bind: 'Test name: {u.data.items.0.name}'
更新: 作为对此的解释 - u 是一个具有其属性的对象,因此尝试绑定到 u.name 实际上将绑定到 商店名称 属性。虽然商店没有名称 属性,但它始终为空。 Store接收到的数据放在data属性中。项目 属性 包含接收数据的原始数组等。
在您的 fiddle 中,您正在使用一家商店,而看起来您只需要一条记录。
使用 links
而不是 stores
应该效果更好,例如:
links: {
u: {
type: 'User',
id: 1
}
}
基于您的代码的工作示例:https://fiddle.sencha.com/#fiddle/uuh