Extjs通过Controller得到Model

时间:2015-02-17 15:11:25

标签: extjs

我将控制器绑定到模型,并使用代理模型。我尝试在控制器初始化函数中获取模型。我使用下一个代码:

Ext.define("AM.controller.Main", {
    extend: 'Ext.app.Controller',

    views: [
            'Grid'
        ],
  models:[          
          'AM.model.Points'
          ],
    init: function(){
    var m = this.getModel('AM.model.Points');
    m.getCount();
}

但是没有定义getCount。当我打印变量m时,它表示它是函数:constructor():

function constructor() {


            return this.constructor.apply(this, arguments) || null;
        } 

如何获得控制器的正确模型对象?

在这里,我添加我的商店,我的模型与代理:

Ext.define('AM.store.ServerStore', {
        extend: 'Ext.data.Store',   
        model: 'AM.model.Points'
     });

Ext.define('AM.model.Points', {
        extend: 'Ext.data.Model',
        idProperty: {
              name: 'UUID', 
              type: String,
              isUnique: true
            },  
        fields: [ 
                  {
                    name: 'NO',
                    type: "string"
                  },
                  {
                    name: 'Y',
                    type: "int"
                  },
                  {
                    name: 'ROW',
                    type: 'int'
                  },
                  {
                    name: 'SEAT',
                    type: 'string'
                  },

                  {
                    name: 'PROCEEDED',
                    type: 'int'
                  },
                  {
                    name: 'X',
                    type: "int"
                  },
                  {
                    name: "CurrentPlace",
                    type: "int",  
                    defaultValue: 0  
                  }
                  ],

                  proxy: {
                      type: 'ajax',            
                      url: 'http://localhost:81/is-bin/INTERSHOP.enfinity/WFS/EnterpriseOrg-MainChannel-Site/ru_RU/-/RUR/HallScheme-PrepareHSXML?HallSchemeElementUUID=zm1VFZxy014AAAENz2ZCr4MF',
                      method: 'POST',
                      headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                      params: {
                            "HallSchemeElementUUID" : "zm1VFZxy014AAAENz2ZCr4MF"
                        },                      
                        remoteSort: true,
                      reader: {
                          type: 'xml',
                          record: 'PLACE'
                      }, 

                    writer: {
                        type: 'xml',                  
                        root: 'PLACE'
                    }
                }

    });

1 个答案:

答案 0 :(得分:2)

模型用于定义商店中的记录结构。 ExtJS中的Model类不存在getCount()。

相反,您需要在包含模型的控制器中引用您的商店,并在商店实例上调用getCount()。

E.g。

var store = this.getStore('storeName');
//or
//var store = Ext.getStore('storeID');
var numRecords = store.getCount();