2014-08-23 2 views
1

У меня есть модель пользователя:ExtJS Databinding ViewModel и сетка не работает

Ext.define('CrudTest.model.User', { 
    extend: 'Ext.data.Model', 
    idProperty: 'Id', 
    fields: [ 
    { name: 'Id', type: 'int' }, 
    { name: 'Name', type: 'string' }, 
    { name: 'PhoneNumber', type: 'int' }, 
    { name: 'Address', type: 'string' },  
    { name: 'StateName', type: 'string' }, 
    { name: 'StateId', type: 'int', reference: 'State' }, ], 
    proxy: { 
     type: 'rest',  
    url:'users',  
    writer: {   writeAllFields: true  },  
}, 
}); 

и пользователи магазина:

Ext.define('CrudTest.store.Users', { 
    extend: 'Ext.data.Store', 
    model: 'CrudTest.model.User', 
    autoLoad: true, 
}); 

и UserViewModel ViewModel:

Ext.define('CrudTest.viewmodel.UserViewModel', { 
extend: 'Ext.app.ViewModel',  
alias: 'viewmodel.uservm',  
stores:{ users: new CrudTest.store.Users()}, 
}); 

и для отображения пользователей:

Ext.define('CrudTest.view.Grid', { 
extend: 'Ext.grid.Panel', 
requires: ['CrudTest.store.Users', 'CrudTest.store.States', 'CrudTest.model.RegisterUserVM', 'CrudTest.viewmodel.UserViewModel'], 
alias: 'widget.myGrid', 
viewModel: {  type: 'uservm',   }, 
columns: [ 
    { text: 'Name', bind: '{users.name}' },  
    { text: 'PhoneNumber', bind: '{users.PhoneNumber}' }, 
    { text: 'Address', bind: '{users.Address}', sortable: false, }, 
     ], 
}); 

Сетка хорошо загружается при установке магазина моей сетки для пользователей. но мне нужно привязку к viewmodel, чтобы в этом случае моя сетка выглядела без какой-либо строки и без ошибки extjs. я прав?

ответ

3

В вашей модели представления не создать магазин, а не просто указать вашу модель

Ext.define('CrudTest.viewmodel.UserViewModel', { 
extend: 'Ext.app.ViewModel',  
alias: 'viewmodel.uservm',  
stores:{ 
    users: { 
     model: 'CrudTest.model.User', 
     autoLoad: true, 
    } 
}); 

Затем в сетке

bind:{store:'{users}'} 
columns: [ 
    { text: 'Name', dataIndex:'Name' 
    { text: 'PhoneNumber', dataIndex:'PhoneNumber', 
    { text: 'Address', dataIndex:'Address', sortable: false, }, 
    ], 
}); 
Смежные вопросы