2011-04-11 16 views
1

我有一個ScriptTagProxy,我能夠接收數據,但現在我想更新記錄。我指定了一個url,但只有一個url。我必須使用此網址處理所有操作(讀取,更新,創建,刪除)嗎? 如果是:該動作如何應用於該網址? 如果沒有:我如何指定更多的網址?Sencha Touch:用於創建/更新功能的ScriptTagProxy 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' 
     } 
    } 
}); 

我的文檔閱讀,你可以通過一個配置對象模型來configurate代理的保存功能。

所以我嘗試以下操作:

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 
      },} 

正如你看到的有指定的網址。 但我仍然收到錯誤: 未捕獲錯誤:您正在使用ServerProxy,但尚未向其提供url。 );

相同的行爲使用AjaxProxy或RestProxy例如:(

回答

0

赫林,

與您的代碼,第一個塊你問時:

問題1)「我必須處理所有的行動(閱讀,更新,創建,刪除)與此網址?「

答案是肯定的。

問題2)「如果是:該操作如何應用到url?」

根據需要定義,像這樣的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並處理它是您的責任。

+0

您定義的actionMethods是默認值,所以這不會改變任何東西。我只想.save()模型「實例」。這是發生錯誤的地方。我可以做一個sync(),但是這不會調用任何可以在後端更新數據的url。 非常感謝您的回答,但它並沒有解決問題:( – hering 2011-04-14 06:18:48

+0

我發現即使它們是默認設置,但直到我明確設置它們時,它才真正以這種方式工作。做了同步()它仍然只是發送一個POST。一旦我設置它們,我開始得到DEL和PUT請求。 – ballmw 2011-04-14 10:40:44

0

赫林,

我在閱讀文檔here,我發現Model類這個例子:

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

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

但是你上面不顯示你的app.models.Entry型號,有你試過了嗎?

相關問題