Saya memiliki Clock
model di Backbone:
var Clock = Backbone.Model.extend({});
Saya mencoba mendapatkan contoh yang memiliki informasi terbaru dari /clocks/123
. Beberapa hal yang saya coba:
metode tingkat "kelas"
Clock.fetch(123)
// TypeError: Object function (){ ... } has no method 'fetch'
membuat sebuah instance dan kemudian memanggilnya fetch
:
c = new Clock({id: 123})
c.fetch()
// Error: A 'url' property or function must be specified
koleksi
Saya mencoba membuat AllClocks
sumber daya koleksi (meskipun saya tidak menggunakan hal seperti itu di halaman):
var AllClocks = Backbone.Collection.extend({
model: Clock,
url: '/clocks/'
});
var allClocks = new AllClocks();
allClocks.fetch(123);
// returns everything from /clocks/
Bagaimana cara mendapatkan satu Jam yang didukung API?
javascript
model-view-controller
rest
backbone.js
James A. Rosen
sumber
sumber
Jawaban:
Pendekatan kedua Anda adalah pendekatan yang telah saya gunakan. Coba tambahkan yang berikut ini ke model Jam Anda:
Pendekatan ini mengasumsikan bahwa Anda telah mengimplementasikan pengontrol dengan hashbang di URL Anda seperti, http://www.mydomain.com/#clocks/123 , tetapi seharusnya berfungsi bahkan jika Anda belum melakukannya.
sumber
[collection.url]/[id]
.Coba tentukan urlRoot dalam model:
Dari dokumen:
sumber
currentBook.set('id', 13423, {silent:true})
. Ini bekerja juga, tapi saya tidak yakin mengapa:currentBook.id = 13423
model.id
pada dasarnya identik denganmodel.attributes.id
. Jika Anda meneleponmodel.set('id')
, Backbone mengaturmodel.id
apa pun yang Anda tentukan. Danmodel.id
apa yang digunakan saat membuat URL khusus model.Saya pribadi merekomendasikan, mengikuti dokumentasi metode Model # url
dalam koleksi Anda, ingatlah untuk menambahkan url koleksi:
dan dalam fungsi inisialisasi View Anda lakukan:
dengan cara ini tulang punggung akan melakukan permintaan ajax menggunakan url ini:
model Anda akan diperbarui dan tampilan dirender, tanpa mengubah Collection # url atau Model # urlRoot
catatan: maaf contoh ini keluar dalam skrip kopi, tetapi Anda dapat dengan mudah menerjemahkannya ke js menambahkan pernyataan var
sumber
{}
di dalam()
untuk objek yang dilewatkan dan;
iklan opsional di akhir barisAkibatnya, Anda membuat permintaan Ajax di
dan Anda mendapatkan tanggapan JSON kembali.
Enjoiiii !!!
sumber
... dan lakukan ini jika Anda tidak ingin garis miring pada model urlRoot:
sumber
Anda mungkin harus mengakses objek melalui koleksi dan menyimpannya dalam koleksi sepanjang waktu. Ini adalah cara untuk melakukannya:
sumber
Saya ingin menggunakan url RESTful, tetapi saya tidak mengerti mengapa 'postId' tidak dapat ditambahkan ke url dasar.
Maka saya tahu hanya setelah saya menetapkan 'idAttribute' sebagai 'postId' di Model saya bisa mendapatkan url yang benar. seperti ini:
sumber