2015-05-08 4 views
4

Я хочу загрузить элемент/элементы из ViewController. Вот пример:Exj JS 5, магазин/модель доступа от ViewController

Ext.define('MyApp.model.User', { 
    extend: 'Ext.data.Model', 
    fields: ['name', 'email'], 
    proxy: { 
     type: 'rest', 
     ... 
    } 
}); 

Ext.define('MyApp.store.User', { 
    extend: 'Ext.data.Store', 
    model: 'MyApp.model.User', 
    data : [ 
    {firstName: 'Seth', age: '34'}, 
    {firstName: 'Scott', age: '72'}, 
    {firstName: 'Gary', age: '19'}, 
    {firstName: 'Capybara', age: '208'} 
    ] 
}); 

Ext.define('MyApp.view.MainController', { 
    extend: 'Ext.app.ViewController', 
    alias: 'controller.main', 

    init: function() { 
     //how to access store here and load items, using its load() method? 
     //how to access model here and load an item, using its load() method? 
    } 
}); 
  1. Как получить доступ магазин здесь и элементы нагрузки, используя метод его нагрузки()?
  2. Как получить доступ к модели и загрузить элемент с помощью метода загрузки?
+0

Обратите внимание, что все, что вы сделали, определяет тип магазина. Чтобы использовать его, вам нужно создать экземпляр, который вы могли бы сделать внутри метода 'init'. –

+0

@Evan Trimboli, Ext JS создает сам магазин, когда он используется через контроллер приложения. Вы просто добавляете массив магазинов, и вы можете использовать this.getSomeStoreNameStore() из контроллера. Вы не создаете его вручную. Почему я должен создавать хранилище вручную, когда он используется внутри контроллера представления? Я думаю, что есть способ, которого я не знаю. – Alexandr

+0

Потому что это контроллер вида, что означает, что он находится на основе представления (у вас может быть много экземпляров). Контроллер приложения является одноразовым, который создает отдельный экземпляр хранилища определенного типа, который используется во всем приложении. Возможно, вы захотите посмотреть конфигурацию 'stores' модели представления. Если вы не используете модель представления, вам нужно создать экземпляр. –

ответ

5
this.getView().getStore() // get the store from the controller's view 
this.getStore('name') // get store by name 
this.getViewModel.getStore('store key') // get store from the View model using the key of the store 

Вы даже можете сделать,

// You can use these from anywhere in the application 
Ext.getStore('Store name'); 
Ext.data.StoreManager.lookup('Store name'); 
AppName.app.getModel('Model Name').create(); 
Ext.ClassManager.get('MyModel'); 
Ext.data.schema.Schema.instances.default.getEntity('MyModel'); 

«Контроллер вид представляет собой контроллер, который может быть присоединен к определенному экземпляру зрения, чтобы он мог управлять видом, и это дочерние компоненты . Каждый экземпляр представления будет иметь новый контроллер вида, поэтому экземпляры изолированы. "

A ViewController должен быть связан с представлением. Без взгляда это не имеет существенной цели. ViewController используется для обработки всех элементов управления, связанных с его представлением: маршрутизация, обработчики событий ... И если вы используете дизайн MVVM, вы также должны использовать ViewModel для своего вида (но не обязательно обязательно). Если вы правильно настроили MVVM, вы можете легко получить экземпляр связанных магазинов и моделей с помощью методов по умолчанию, уже предоставленных вашим ViewController и ViewModel.

getStore (имя): Ext.data.Store Получить Ext.data.Store прикрепленного к ViewModel, прикрепленного к данному контроллеру. См. Ext.app.ViewModel.getStore.

Пожалуйста, проверьте MVVM architecture. Я также нашел примеры Saki: http://extjs.eu/ext-examples/#complex-data-binding-5

 Смежные вопросы

  • Нет связанных вопросов^_^