Зареждане на данни в модел от id-Extjs

опитвам се да използвам директно съхраняване в Extjs
ето кода за моя магазин

Ext.define('IDE.store.Files', {
    extend: 'Ext.data.Store',
    proxy: {
        type: 'direct',
        api: {
            create:Files.AddNew,
            read:Files.GetFile,
            update:Files.Update,
            destroy:Files.Delete,
            //load:Files.GetFile
        },
        paramOrder:'Path'
    },
    model:'IDE.model.File'
})

кодът на модела е

Ext.define('IDE.model.File', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'Path', type: 'string' },
        { name: 'Name', type: 'string' },
        { name: 'Extention', type: 'string' },
        { name: 'Content', type: 'string' }
    ],
    idProperty:'Path',
    store:'IDE.store.Files'
})

както можете да видите, idProperty е Path
следният кодов сегмент дава грешка

//this.getStore('IDE.store.Files').load(path, { sucess: function (file) {
//                console.log(file.get('Content'));           
//            } });
this.getStore('IDE.store.Files').load(path);

тук получавам path от някъде и се опитвам да заредя файл от конкретния път, грешката е

 Ext.data.proxy.Direct.doRequest(): No direct function specified for this proxy

сега проблемът е, че документацията на extjs не е достатъчна и навсякъде, където търсих, виждах само 4 api в api обекта на proxy. Кои са
1.create
2.read
3.update
4.destroy

кой api ми липсва? ИЛИ
къде трябва да дам директна функция за load()


person Parv Sharma    schedule 13.06.2012    source източник
comment
Коя точно версия на ExtJS използвате? Тъй като параметрите, които давате на load(), изглеждат неправилни. Също така може да премахне load: config от api: - не се поддържа.   -  person Izhaki    schedule 13.06.2012
comment
ооо, това беше, защото опитвах нещо.. сега редактирах въпроса, за да отразява точната ситуация   -  person Parv Sharma    schedule 13.06.2012
comment
Коя версия на EXT? 4.0.7? 4.1?   -  person Izhaki    schedule 13.06.2012
comment
Въпреки че мисля, че това е проблемът, вярвам, че правилните параметри на load() трябва да изглеждат така: this.getStore('IDE.store.Files').load( { params: {path: 'somepath' } } ). Можете ли да потвърдите, че това все още не работи?   -  person Izhaki    schedule 13.06.2012
comment
Мисля, че причината за това е, че ExtJS търси проксито в модела. Сигурен съм, че вашият код ще работи с 4.1. Както и да е, бихте ли опитали да преместите дефиницията на прокси към модела и да видите дали работи?   -  person Izhaki    schedule 13.06.2012


Отговори (1)


има множество проблеми, които мога да разбера с моя код, така че просто поставям тук за помощ на общността.
1. начинът, по който извиквах функцията за зареждане, е правилен.. и тя просто взема параметъра, но цял обект с обхват и обратно извикване, така че може би това беше грешката, казвайки http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.Store-method-load
2. ако просто премахна api.. и използвайте опцията за конфигуриране directFn, тогава изглежда, че работи..

Код:

Ext.define('IDE.store.Files', {
    extend: 'Ext.data.Store',
    proxy: {
        type: 'direct',
        directFn: Files.GetFile, // <--- new line of code
        api: {
            create:Files.AddNew,
            //read:Files.GetFile, // <--- old line of code
            update:Files.Update,
            destroy:Files.Delete
        },
        paramOrder:'Path'
    },
    model:'IDE.model.File'
})
person Parv Sharma    schedule 18.06.2012
comment
Добавих кода, така че следващият читател да може да види как изглежда кодът. - person MacGyver; 18.03.2014