2017-06-22 23 views
0

我是extjs的新手我想为extjs mvc编写一个示例。如果我在一个文件app.js中编写mvc,它工作正常,但是如果我将它们分开为differtent文件(模型,视图和控制器),那么数据正在填充,但eventlisteners不起作用: 下面是我的商店js:如何在视图层中将商店别名转换为extjs处理程序

Ext.define('Crud.store.Product',{ 
    extend: 'Ext.data.Store', 
    alias:'widget.pStore', 
    model: 'Crud.model.Product', 
    autoLoad: true, 
    autoSync: true 

}); 

,问题是鉴于JS:

var rowEditing = Ext.create('Ext.grid.plugin.RowEditing'); 
Ext.define('Crud.view.Main',{ 
    extend: 'Ext.grid.Panel', 
    renderTo: document.body, 
    plugins: [rowEditing], 
    width: 400, 
    height: 300, 
    frame: true, 
    title: 'Products', 
    alias:'pGrid', 
    store: 'Product', 
    columns: [{ 
      text: 'ID', 
      width: 40, 
      sortable: true, 
      dataIndex: 'id' 
     }, { 
      text: 'Name', 
      flex: 1, 
      sortable: true, 
      dataIndex: 'name', 
      field: { 
       xtype: 'textfield' 
      } 
     }, { 
      header: 'Price', 
      width: 80, 
      sortable: true, 
      dataIndex: 'price', 
      field: { 
       xtype: 'textfield' 
      } 
     }], 
    dockedItems: [{ 
      xtype: 'toolbar', 
      items: [{ 
        text: 'Add', 
        iconCls: 'icon-add', 
        handler: function() { 
         // empty record 
         store.insert(0, new Product()); 
         rowEditing.startEdit(0, 0); 
        } 
       }, '-', { 
        text: 'Delete', 
        iconCls: 'icon-delete', 
        handler: function() { 
         var selection = grid.getView().getSelectionModel().getSelection()[0]; 
         if (selection) { 
          store.remove(selection); 
         } 
        } 
       }] 
     }] 
}); 

在​​,跟它电网没有为store.insert(0,new Product())没有定义的定义和相同的。

在单个js文件中,如果我在下面创建变量,它可以正常工作。

grid=Ext.create('Ext.grid.Panel',{ 
//view code 
} 

and store= Ext.create('Ext.data.Store',{ 
    //store code 
} 

你能帮助我如何获得商店和网格对象吗?

回答

0

你必须去从按钮网格被点击(处理程序的第一个参数),并从那里来存储:

handler: function(btn) { 
    var grid = btn.up('grid'), 
     store = grid.getStore(); 
+0

我能够拿到店里,但它抛出错误**未捕获的ReferenceError:产品没有定义**下面是我的模型。 'Ext.define( 'Crud.model.Product',{ \t扩展: 'Ext.data.Model', - } – Arat

+0

我得到了它**变种产品= Ext.ModelManager.getModel('界面污物.model.Product'); ** store.insert(0,Product); 它的工作 – Arat

+0

您可以使用全名创建新模型:'new Crud.model.Product()',或者您只需添加一个空对象并让商店自动将其转换为适当类型的模型:store.add({});' – Alexander

0

您可以指定STOREID一家商店,被拿到店里其ID。

在创建店:

store= Ext.create('Crud.store.Product',{ 
    storeId: 'some-store-id' 
} 

在事件处理程序:

handler: function() { 
    var store = Ext.getStore('some-store-id'); 
} 
相关问题