【问题标题】:Backbone: cid after sync?骨干网:同步后的cid?
【发布时间】:2012-09-14 21:21:03
【问题描述】:

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

谁能看到我做错了什么?

// 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

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    cid 是在创建模型时创建的,然后永远不会更改。请参阅文档:

    models的一个特殊属性,cid或者client id是唯一的 标识符在第一个模型时自动分配给所有模型 已创建

    我们来看看Backbone.Model的构造函数:

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

    如您所见,cid 是使用下划线 uniqueId 方法创建的。

    【讨论】:

    • 好的,但它不应该还在控制台中登录吗?文档还说它可以在 Model.cid 访问
    • 它的日志记录c0,这是模型的cid。
    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2012-12-21
    • 2015-07-21
    相关资源
    最近更新 更多