0

docsによると、モデルで関数を定義し、そのモデルのインスタンスで関数を呼び出すことができるはずです。

少なくとも、プロキシからモデルをロードする場合は機能しません。

私のモデル:

Ext.define('MyApp.model.Detail', {
    extend: 'Ext.data.Model',
    fields: [
        'someField',
        'anotherField',
    ],

    someFunction: function() {
            //do something
    },

    proxy: {
        type: 'ajax',
        url: 'http://example.com/details',
        reader: {
            type: 'json',
            root: 'data',
            totalProperty: 'total',
            successProperty: 'success',
        }
    },
});

店:

Ext.define('MyApp.store.DetailStore', {
    extend: 'Ext.data.Store',
    storeId: 'detailStore',
    model: 'MyApp.model.Detail',
});

コントローラ:

Ext.define('MyApp.controller.appController', {
    extend: 'Ext.app.Controller',
    init: function() {
        this.getDetailStoreStore().addListener('load', this.newDetails, this);
    },

    stores: ['DetailStore'],

    models: ['Detail'],

    views : ['DetailView], //exists, not copied into question

    newDetails: function(store, records) {
        var details = records[0].data;
        details.someFunction();  // Uncaught TypeError: Object #<Object> has no method 'someFunction'
    }
});

data.someFunction() を呼び出すと、newDetails 関数でエラーが発生します。

私の期待は間違っていますか?

4

1 に答える 1

1

関数はモデルに存在するため、次のように呼び出します。

records[0].someFunction();
于 2012-12-05T21:03:30.630 に答える