2

Backboneを使用してオブジェクトとメソッドを作成する方法を理解しようとしています。私はこのようなものから始めました:

Person = (function () {
  return Backbone.Model.extend({
    defaults: {
      name: 'jon' 
    },

    changeName: function (newName) {
     console.log(newName);
      this.name = newName;
    }
  });

})();


var p1 = new Person();
console.log(p1.get('name'));
p1.changeName("samanatha");
console.log(p1.get('name'));

私が理解していないのは、なぜ私のp1.nameプロパティが変更されないのかということです。'this'がどのように機能するかをまだ把握しようとしているので、this.nameの "this"と関係があると思いましたが、他の何かが欠けていると思いますthis.name = newNamename=newNameどちらも機能しません。ありがとう!

4

2 に答える 2

5

nameモデルの属性に含まれています:p1.attributes.name。そのため、を使用してアクセスしますget()。変更する場合nameは、次のいずれかを実行できます。

p1.set("name", "samantha")

p1.set({"name": "samantha"})

オブジェクトを渡すことにより、後者では一度に複数の属性を設定できます。

ドキュメントによると:

Please use set to update the attributes instead of modifying them directly.

これにより、Backboneはchange、属性を変更したときにイベントをトリガーしたり、を呼び出したときに属性のシリアル化されたバージョンを提供したりすることができますtoJSON()

于 2013-03-22T05:20:04.103 に答える
0
...
changeName: function (newName) {
 console.log(newName);
  this.name = newName;
}
...

する必要があります

...
changeName: function (newName) {
 console.log(newName);
  this.set ({'name': newName});
}
...

http://backbonejs.org/#Model-set

于 2013-03-22T05:27:38.550 に答える