【发布时间】:2012-12-11 08:22:39
【问题描述】:
我刚开始使用一个简单的“计数器”应用程序来学习主干.js 和 couchdb。可以在此处找到使用本地存储的版本:demo fiddle。这是一个简单的应用程序,显示一个可以递增和递减的计数器。计数器的值存储在数据库中。在引用的版本中,我使用的是 localstorage,它似乎工作得很好。
当我将示例转换为使用 couchdb 时,问题就出现了。因此,我创建了一个 couchapp 并修改了代码以使用 backbone-couchdb connector。我还包括了数据库配置属性(如here 所述)。代码的相关(改编)部分如下(归结为包含 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();
}
});
但是,每当我增加或减少计数器时,都会出现以下错误:“必须指定“url”属性或函数”。从文档中,我了解到模型从包含它的集合中获取其 url。好像不是这样的?我做错了什么?
也许应用程序的另一个相关部分是我实例化 Counter 模型的地方(也可以在演示小提琴中看到); 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
});
}
【问题讨论】:
标签: javascript backbone.js couchdb couchapp