TL的; DR版本:爲骨幹DELETE請求不正確的基礎URL - 使用相對而不是絕對URL
使用建設骨幹PhoneGap的應用程序,並有一個模型叫做客戶端和一個稱爲客戶端集合。使用Tastypie API與單獨的服務器進行通信。當我運行fetch()
,URL使用正確的絕對URL(如http://127.0.0.1:8000/api/v1/client/1/
的東西,但是當我運行Client.destroy()
,它使用的file:///api/v1/client/1/
相對URL。我怎樣才能使它使用絕對URL刪除對象?
朗版本:
我建立與Backbone.js的移動應用程序,消耗一個Django/Tastypie API,和我碰到的一些看似奇怪的行爲,我無法弄清楚
我定義了一個位於文件頂部的服務器的基本URL:
// Set the base URL for querying the API
baseUrl = 'http://127.0.0.1:8000/api/v1/';
我有以下的模型和集合:
// Client model
Client = Backbone.Model.extend({
urlRoot: baseUrl + 'client',
// Default values
defaults: {
id: '',
name: '',
mobile: '',
email: '',
notes: '',
operator: '',
date_client_joined: '',
address: '',
postcode: ''
}
});
// Client collection
Clients = Backbone.Collection.extend({
// Will hold Client objects
model: Client,
// Set URL
url: baseUrl + 'client/'
});
和個人客戶正在使用下面的視圖列表中的呈現:
// Client list item view
ClientListItemView = Backbone.View.extend({
tagName: 'li',
events: {
'click .delete': 'deleteclient'
},
render: function() {
// Render the client list item template
var template = _.template($('#client-list-item-template').html());
this.$el.html(template(this.model.toJSON()));
// Return the object
return this;
},
deleteclient: function() {
this.model.destroy();
return false;
}
});
現在,應用程序實際上使用jQuery Mobile的每個客戶端在其旁邊有一個刪除按鈕,並帶有一個刪除類,因此每次單擊這些按鈕時都會執行deleteclient功能。我也使用backbone-tastypie來消除Backbone和Tastypie之間的不一致性。
deleteclient函數正在運行,但它將HTTP DELETE請求發送到相對URL爲file:///api/v1/client/1/
(因爲這是一個Phonegap應用程序,我只是在本地查看這些文件)。從文檔設置urlRoot手動似乎是要走的路,但這樣做似乎並沒有解決問題。運行fetch()函數來填充集合絕對沒問題 - 它使用正確的絕對URL。
所以,我的問題是如何覆蓋默認行爲,並確保我的HTTP DELETE請求發送到正確的URL?
的'網址()'方法WASN因某種原因而被要求。但是,覆蓋它的作品行,所以我會去。 –
也許你想檢查你使用的骨幹版本......無論如何,一切都正常工作:-) – Tallmaris
它是1.0,通過鮑爾 –