2013-03-10 68 views
0

我對Backbone相當新,我一直在做教程,以更好地理解骨幹,但我永遠無法弄清楚如何可以在模型中定義的URL工作。Backbone.js url函數是如何工作的?

網址: '/的TodoItem'

我從PHP環境來了,我習慣了靜態網頁。 '/ todoItem'究竟是什麼?

謝謝。

+1

我保證我不會被嚇倒。我肯定會推薦閱讀Backbone的源代碼來幫助你學習它。這不是太長,我發現它看起來很有幫助,看看一切如何結合在一起。 – loganfsmyth 2013-03-10 18:01:16

+0

同意。我想我會給它一個閱讀;)謝謝 – 2013-03-10 18:02:25

回答

6

Backbone採用REST風格的API,其中每個模型都是具有自己的URL路徑的REST資源。所以,你可能能夠做這樣的事情:

  • 創建POST /car
  • 閱讀GET /car/42
  • 更新一個特定的汽車資源汽車特定的資源與PUT /car/42和JSON請求的身體像{"model": "Corolla"}
  • 汽車資源
  • 刪除特定車DELETE /car/42

所以通常一個模型想要的網址如果它是新的(尚未保存的)模型,則爲/car,否則爲/car/42。因此,default implementation from backbone是:

url: function() { 
    var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url') || urlError(); 
    if (this.isNew()) return base; 
    return base + (base.charAt(base.length - 1) === '/' ? '' : '/') + encodeURIComponent(this.id); 
}, 

所以通常情況下,所有你需要做的是改變urlRoot財產,你是好去,如果你的API遵循REST約定。

var Car = Backbone.Model.extend({urlRoot: '/car'}); 
+0

彼得,我還是不太明白。該網址發生了什麼?如何將發佈到URL的信息插入到數據庫中? – 2013-03-10 18:09:39

+0

@IlyaKarnaukhov:你需要一些服務器端代碼(可能PHP,可能是別的東西,Backbone不關心)來處理[GET/POST/PUT/...請求](http://backbonejs.org/docs /backbone.html#section-174)並與數據庫交談。您可能需要使用['emulateHTTP'](http://backbonejs.org/#Sync-emulateHTTP)或['emulateJSON'](http://backbonejs.org/#Sync-emulateJSON),具體取決於服務器的工作方式。 – 2013-03-10 18:27:24

+0

@IlyaKarnaukhov堆棧溢出是針對特定問題。 Backbone是非常有據可查的文件,並有許多高質量的教程和演示項目。從那裏開始。基礎架構是一個數據庫,服務器上的Web應用程序,具有一些業務邏輯來處理數據庫數據,提供給瀏覽器的RESTful API以及瀏覽器中基於骨幹網的JavaScript單頁應用程序設計。 – 2013-03-10 18:30:08