[英]Backbone.js dynamic URL problems
我有這個Backbone.js模型並查看代碼,在這里我試圖從文本字段中獲取一個值,並基於此值從REST api中獲取數據。 我在修改基本URL時遇到問題。
具有基本網址的模型:
var TodoItem = Backbone.Model.extend({
urlRoot : 'http://localhost/Codeigniter/index.php/testcontroller',
initialize: function(){
this.set('id', 1);
},
defaults: {
name: '',
age: ''
}
});
var todoitem = new TodoItem({name: "name"});
我設置新網址的功能:
getUrl: function(celebname){
var urlstr = "http://localhost/Codeigniter/index.php/testcontroller/getdatabasedata?searchvalue="+celebname;
return urlstr;
},
從REST API獲取數據的函數。
getdata: function (event) {
var celebname = $('#celebname').val();
this.model.set({name: celebname});
this.model.save({}, { urlRoot: this.getUrl(celebname)});
this.model.fetch();
},
目前,我收到此錯誤:
GET http://localhost/Codeigniter/index.php/testcontroller/1
我無法使用getURL函數更改基本URL來從輸入字段中搜索值,而是在末尾使用基本URL和ID。 如果我沒有在模型的初始化函數中設置ID,那么我會收到此錯誤:
POST http://localhost/Codeigniter/index.php/testcontroller
/ getdatabasedata?searchvalue = Rome
從我在線閱讀的內容來看,這是因為沒有為模型分配ID。 如何使用GET方法獲取輸入字段值,構建URL和獲取數據? 謝謝
骨干網與真正的RESTful API配合得非常好。 這里的部分問題是您擁有的API與Backbone模型之間的映射不佳,即它不是完全RESTful的。 結果,您將不得不借助“ hacks”來使客戶端和服務器相處融洽。 動態修改模型的路徑就是這種黑客的一個例子。
可以幫助您獲得更好答案的是,如果您可以詳細說明您所考慮的用例。
據我所知,您並不是真正想要保留TodoItem
。 相反,您正在嘗試使用一些基本數據對其進行預填充。 如果這是真的,那么您實際上不應該執行save
–您應該僅執行fetch
。
getdata: function (event) {
var celebname = $('#celebname').val();
var id = this.model.id;
this.model.id = 'getdatabasedata';
this.model.fetch({data: {searchvalue: celebname}});
this.model.id = id;
}
傳遞data
選項將告訴jQuery將其用作查詢字符串參數。
再說一次,這很hacky,我不推薦這樣做,但是它將完成您嘗試做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.