2012-09-22 48 views
0

我使用以下代码测试Backbone的Localstorage。保存模型后,它应该创建一个id,并且还可以在Model.cid中访问一个cid。它在控制台(见下文)中记录了id,但不是cid。这里是一个小提琴重新创建问题http://jsfiddle.net/mjmitche/haE9K/2/主干:同步后的cid?

任何人都可以看到我做错了什么?

// Model Creation with defaults 
var Todo = Backbone.Model.extend({ 

    localStorage: new Backbone.LocalStorage("todos"), 
    defaults: { 
     title:'new todo...', 
     description:'missing...', 
     done:false 
    } 
}); 

var myTodo = new Todo({}); 

console.log("Before save id:"+myTodo.get('id')); // Unique Id from Server 
console.log("Before save cid:"+myTodo.cid); // Client side id 
myTodo.save(); 

console.log(myTodo.get('title')); 
console.log("After save id:"+myTodo.get('id')); 
console.log("After save cid:"+myTodo.cid); 

控制台导致

Before save id:undefined app.js:16 
Before save cid:c0 app.js:17 
new todo... app.js:20 
After save id:99bc7f4c-8837-39f4-91e9-90760d8ee8cd app.js:21 
After save cid:c0 app.js:22 

回答

2

创建模型,然后永远不会改变时创建的CID。请参阅该文档:

的模型一个特殊性质,在CID或客户端ID是自动分配到所有车型时,他们第一 创建

让我们在看一个唯一的标识符 构建Backbone.Model的功能:

var Model = Backbone.Model = function(attributes, options) { 
    . 
    . 
    . 
    this.cid = _.uniqueId('c'); 
    . 
    . 
    . 
    }; 

正如你可以看到,在创建CID有使用下划线UNIQUEID方法。

+0

好的,但它不应该仍然在登录控制台?该文档还说,它可以在Model.cid – BrainLikeADullPencil

+0

访问它的日志'c0',这是模型的cid。 –

+0

好的,谢谢,我现在意识到我的错误。从0开始计数 – BrainLikeADullPencil