로프를 배우기 위해 간단한 '카운터'응용 프로그램을 사용하여 backbone.js 및 couchdb로 작업하기 시작했습니다. localstorage를 사용하는 버전은 demo fiddle입니다. 이 카운터는 증가 및 감소 할 수있는 카운터를 표시하는 간단한 응용 프로그램입니다. 카운터의 값은 데이터베이스에 저장됩니다. 참조 된 버전에서, 나는 잘 작동하는 것 같다 localstorage를 사용하고 있습니다.Backbone-couchdb 커넥터 오류 : url 속성 또는 함수를 지정해야합니다.
예제를 couchdb를 사용하도록 변환 할 때 문제가 발생합니다. 따라서 couchapp를 만들고 코드를 backbone-couchdb connector과 호환되도록 수정했습니다. 나는 또한 db config 속성 (언급 된 바와 같이 here)을 포함시켰다. 코드의 관련 (적응 된) 부분은 아래에서 찾을 수 있습니다 (url 속성을 포함하는 것으로 나타남). "A"URL "속성이나 기능을 지정해야합니다"나는이 증가 또는 카운터, 다음과 같은 오류 arrises을 감소 할 때마다 그러나
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();
}
});
. 설명서에서 모델이 포함 된 Collection에서 해당 모델의 URL을 가져옵니다. 이것은 사실이 아닌 것 같습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
아마도 앱의 또 다른 관련 부분은 카운터 모델을 인스턴스화하는 곳일 것입니다 (데모 피들에서도 볼 수 있습니다). 앱 조회의 초기화 방법 :
initialize: function() {
var currentCounter;
if (theCounters.size() > 0) currentCounter = theCounters.last();
else {
currentCounter = new Counter();
theCounters.push(currentCounter);
}
this.counterview = new CounterView({
model: currentCounter
});
}
주셔서 감사합니다 응답. urlRoot 속성을 추가하면 오류는 수정되지만 동작을 올바로 수행하지 못하는 것처럼 보입니다. 즉, 앱을 다시 시작할 때 영구 모델을 얻지 못합니다.하지만 이는 다른 이유로 인한 것일 수도 있습니다. 어쨌든, 나는 당신이 url 속성에 대해 언급 한 내용에 대해 매우 혼란 스럽다. doc과 모순 된 것처럼 보이기 때문이다 : http://documentcloud.github.com/backbone/#Model-url 또는 그렇지 않은가? 더 이상의 설명이 필요합니다. –
문서를 두 번 확인한 후에 보았을 때 컬렉션의 'url' 속성을 설정하고 필요할 때가 될 것이라고 생각할 때 매우 옳았습니다. 그러나, 내가 지금까지 이해하고 알고있는 것으로부터, 그 속성은 전체 Collection을 동기화 할 때만 작동합니다 (즉,'1'','2'',''3''을'id'로 가진 3 개의 모델을 가지고 있다면 콜렉션은 동기화 될 것입니다 root/1 '로 바꾼다.그러나 코드는 모델을 개별적으로 저장하므로 컬렉션이 실제로 무엇인지 모릅니다. 그래서 모델에'url' 또는'urlRoot'를 제공해야합니다. 의사가 말하는 것은 더 많거나 적습니다 ^^ – Meta