Sencha Touch: URL ScriptTagProxy для создания / обновления функциональности - PullRequest
1 голос
/ 11 апреля 2011

У меня есть ScriptTagProxy, и я могу получать данные, но теперь я хотел обновить запись.Я указал URL, но только один URL.Должен ли я обрабатывать все действия (чтение, обновление, создание, удаление) с этим URL?Если да: как действие применяется к URL?Если нет: как я могу указать больше URL?

Вот код, который у меня есть:

app.stores.entries = new Ext.data.Store({
    model: "app.models.Entry",
    storeId: 'app.stores.entries',
    proxy: {
        type: 'scripttag',
        url: 'http://myurl.de/getEntries.php',
        extraParams: {
            username: Ext.util.JSON.decode(window.localStorage.getItem('settings')).username,
            password: Ext.util.JSON.decode(window.localStorage.getItem('settings')).password
        },
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json'
        }
    }
});

Я прочитал в документации, что вы можете передать объект конфигурацииФункция сохранения модели для настройки прокси.

Итак, я попытался сделать следующее:

entry.save({
            url: 'http://mysite.com/updateEntry.php',
            extraParams: {
                username: Ext.util.JSON.decode(window.localStorage.getItem('settings')).username,
                password: Ext.util.JSON.decode(window.localStorage.getItem('settings')).password,
                entry: entry
            },}

Как видите, указана ссылка.Но я все еще получаю сообщение об ошибке: Uncaught Error: вы используете ServerProxy, но не предоставили ему URL-адрес.);

То же поведение при использовании AjaxProxy или RestProxy, например: (

Ответы [ 2 ]

0 голосов
/ 16 апреля 2011

Геринг,

Я читал документацию здесь , я нашел этот пример в классе Model:

Ext.regModel('User', {
    fields: ['id', 'name', 'email'],

    proxy: {
        type: 'rest',
        url : '/users'
    }
});

Но выше вы не показываете свою модель для app.models.Entry, вы пробовали это?

0 голосов
/ 14 апреля 2011

Геринг,

С вашим первым блоком кода вы спрашиваете:

Вопрос 1) «Нужно ли обрабатывать все действия (читать, обновлять, создавать, удалять) с этим URL?»

Ответ - да.

Вопрос 2) «Если да: как действие применяется к URL-адресу?»

В соответствии с исходным кодом Sencha вам нужно определить actionMethods следующим образом:

myApp.stores.Things = new Ext.data.Store({
model: "Things",    proxy: {
    type: 'ajax',
    actionMethods: {
        create: 'POST',
        read: 'GET',
        update: 'PUT',
        destroy: 'DELETE'
    },
    url: 'jsontest.json',
    reader: {
        type: 'json',
        root: 'things'
    }
},
autoLoad: true

});

Если вы удаляете, создаете или редактируете запись, вы должны позвонить:

store.sync();

Существует также свойство "автосохранение", но оно синхронизируется только при редактировании, а не при удалении.

При этом будут отправлены вещи, которые были изменены или удалены как часть полезной нагрузки запроса, вы обязаны проанализировать json и обработать его.

...