ExtJS 4.2.1 - 使用关联不起作用的getter / setter

时间:2013-12-30 02:42:02

标签: javascript extjs associations setter getter

我在尝试在与另一个模型关联的Model对象上调用getter / setter时遇到了麻烦。以下是课程:

Category.js

Ext.define('Chapter05.model.Category', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'id',   type: 'int' },
        { name: 'name', type: 'string' }
    ]
})

Product.js

Ext.define('Chapter05.model.Product', {
    extend: 'Ext.data.Model',

    requires: [
        'Chapter05.model.Category'
    ],

    fields: [
        { name: 'id',          type: 'int' },
        { name: 'category_id', type: 'int' },
        { name: 'name',        type: 'string' }
    ],
    // we can use the belongsTo shortcut on the model to create a belongsTo association
    associations: [
        { type: 'belongsTo', model: 'Chapter05.model.Category' }
    ]
})

Main.js

Ext.define('Chapter05.view.Main', {
    extend: 'Ext.container.Container',
    requires:[
        'Ext.tab.Panel'
        'Chapter05.model.Product',
        'Chapter05.model.Category',
    ],

    xtype: 'app-main',
    layout: 'vbox',

    items: [
        {
            xtype: 'button',
            text: 'Category',

            handler: function(evt) {
                var product = new Chapter05.model.Product({
                    id: 100,
                    category_id: 20,
                    name: 'Sneakers'
                });

                product.getCategory(function(category, operation) {
                    // do something with the category object
                    alert(category.get('id')); // alerts 20
                }, this);
            }
        }
    ]
});

错误发生在product.getCategory(...)所在的行。我在Safari Web Inspector中收到以下消息:

TypeError: 'undefined' is not a function (evaluating 'product.getCategory')

我忘了做某事吗?

P.S。 该项目(第05章)是使用Sencha Cmd生成的。因此,完全限定名称。

1 个答案:

答案 0 :(得分:1)

我遇到了与hasOne关系类似的问题。它是通过自己指定getters / setter和associationKey来解决的。

类似的东西:

belongsTo: {
    model: 'Chapter05.model.Category',
    getterName: 'getCategory',
    setterName: 'setCategory',
    associationKey: 'category_id'
}