簡體   English   中英

Backbone.js動態URL問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM