0

次のコードを使用して、Backbone の Localstorage をテストしています。モデルを保存した後、Model.cid でアクセス可能な id と 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
4

1 に答える 1

2

cid はモデルの作成時に作成され、その後変更されることはありません。ドキュメントを参照してください:

モデルの特別なプロパティであるcidまたはクライアントIDは、モデルが最初に作成されたときにすべてのモデルに自動的に割り当てられる一意の識別子です

Backbone.Model の構築関数を見てみましょう。

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

ご覧のとおり、cid はアンダースコアの uniqueId メソッドを使用して作成されます。

于 2012-09-22T21:13:46.680 に答える