2012-03-16 16 views
1

Backbone.modelを使用して、パラメータをget methodに渡さないとオブジェクトを取得するためにgetメソッドを変更したいと考えています...Backbone.model、getメソッドを変更するにはどうすればいいですか

Task = Backbone.Model.extend({}); 
task = new Task({ 
    id: 2, 
    name: "taskName" 
}); 

task.get("id"); // 2 // ***** ok ****** 
task.get("name"); // "taskName" // ***** ok ****** 
task.get(); // undefined // ******* it should be {id: 2, name: "taskName"} ***** 
+0

'task.attributes'を使用しない任意の理由は? – chesles

+1

これはまったくダムではなく、get()はオブジェクト全体を返すことができます。それは論理的だと思われる。 –

+0

私はできるだけ少なく書いて物事をより明白にするために最善を尽くすべきだと思います。 – antonjs

答えて

3

マニュアルに述べたようにあなたは、Model().get()をオーバーライドすることができます:

例えば

Task = Backbone.Model.extend({ 
    get: function(attribute){ 
     if(typeof attribute === "undefined"){ 
      return this.attributes; 
      // Or, assuming you’ve also got json2.js available: 
      // return this.toJSON(); 
     } 
     else { 
      return Backbone.Model.prototype.set.call(this, attribute); 
     } 
    } 
}); 

demo

2

これを行うにはtask.attributesを使用できます。 From the documentation

属性プロパティは、モデルの状態を含む内部ハッシュです。

Here's a demo

関連する問題