0

モデルのインスタンスから属性を取得して、modelメソッドを使用してunset()リクエスト作成したいと思います。_idPOSTsave()

しかし、私Uncaught TypeError: Object [object Object] has no method 'call' backbone-min.jsはこの行のために得ます:

myModel.unset('_id');

私は使用してidAttribute: "_id"いるので、試しました:

myModel.unset('id');

_idただし、属性の設定を解除することはありません。

4

2 に答える 2

2

使用model.unset('_id')すると問題なく動作するはずです。私の推測では、エラーはchange、コードまたはライブラリコードのいずれかでイベントリスナーによってスローされます。イベントをトリガーしないために、silent:trueオプションを使用できます。

ただし、単にmodel.save()メソッドにを実行させたい場合は、属性POSTの設定を解除する必要はありません。_id

代わりに、model.isNewメソッドをオーバーライドします。バックボーンはこれを使用して、モデルが新しい(そしてPOST編集する必要がある)か、既存の(そしてあるべき)かを判断しPUTます。メソッドをオーバーライドして常にtrueを返すようにすると、モデルがPOST毎回編集されるようになります。

isNew: function() { return true; }
于 2013-01-31T23:53:22.220 に答える
0

attributesバックボーンは、モデル内で呼び出されるオブジェクトに属性を格納します。属性_idは、そのモデルのIDを表しますが、モデルが新しいかどうかを判断するために使用されるものではありません。

決定を行うために使用される(の兄弟)と呼ばれるプロパティがあります。idattributesisNew()

を強制する場合は、プロパティPOSTを削除する必要があります。id

var id = model.id;
model.unset('_id');
delete model.id;
model.save(); // this will do a POST
于 2013-02-01T00:52:19.960 に答える