次のようなモデルがあります。
var TodosModel = Backbone.Model.extend({
defaults: {
id: null,
content: 'Something Todo',
completed: false
},
url: function() { return 'api/'+this.id; }
});
次の方法でモデルを追加しています:
var todoID = _.uniqueId();
var todoContent = this.newTodoField.val();
var todoCompleted = false;
// Ensure there's something to save
if(todoContent.length>0){
var _this = this;
// Create model
var todo = new TodosModel({
id: todoID,
content: todoContent,
completed: todoCompleted
});
todo.save({}, {
wait: true,
success: function(model, response) {
// Let the events deal with rendering...
_this.collection.add(model);
},
error: function(model, response) {
console.log('Could not create todo');
}
});
}
私が抱えている問題は、何らかの理由ですべての ID が二重にインクリメントされることです。そのため、要素なしで開始すると、1,3,5,7 が得られます...
リロードしてそれらの ID が API から取り込まれ、次に生成される _.uniqueID がレンダリングされたカウントに基づいている場合を除いて、これは問題ありません。
完全なコードは次のとおりです: http://sandbox.fluidbyte.org/todos/js/todos.js