Saya baru saja mulai bekerja dengan backbone.js dan couchdb menggunakan aplikasi 'penghitung' sederhana untuk mempelajari seluk beluknya. Versi yang menggunakan penyimpanan lokal dapat ditemukan di sini: demo biola. Ini adalah aplikasi sederhana yang menampilkan penghitung yang dapat ditambah dan dikurangi. Nilai penghitung disimpan dalam database. Dalam versi referensi, saya menggunakan penyimpanan lokal, yang tampaknya berfungsi dengan baik.
Masalah muncul ketika saya mengonversi contoh saya untuk menggunakan couchdb. Oleh karena itu, saya membuat couchapp dan mengadaptasi kodenya agar berfungsi dengan konektor backbone-couchdb. Saya juga menyertakan atribut konfigurasi db (seperti yang disebutkan di sini ). Bagian kode yang relevan (diadaptasi) ditemukan di bawah (yang intinya menyertakan atribut url).
var Counter = Backbone.Model.extend({
defaults: {
countervalue: 0
},
initialize: function() {
_.bindAll(this);
},
increment: function() {
this.save({countervalue: this.get('countervalue') + 1});
},
decrement: function() {
this.save({countervalue: this.get('countervalue') - 1});
}
});
var Counters = Backbone.Collection.extend({
model: Counter,
url : "counters",
initialize: function() {
this.fetch();
}
});
Namun, setiap kali saya menambah atau mengurangi penghitung, kesalahan berikut muncul: "Properti atau fungsi "url" harus ditentukan". Dari dokumentasinya, saya memahami bahwa Model mendapatkan urlnya dari Koleksi yang memuatnya. Tampaknya bukan itu masalahnya? Apa yang saya lakukan salah?
Mungkin bagian lain yang relevan dari aplikasi ini adalah tempat saya membuat instance model Counter (dapat juga dilihat di demo biola); metode inisialisasi AppView:
initialize: function() {
var currentCounter;
if (theCounters.size() > 0) currentCounter = theCounters.last();
else {
currentCounter = new Counter();
theCounters.push(currentCounter);
}
this.counterview = new CounterView({
model: currentCounter
});
}