0

属性を持つpersonモデルがあるとしnameます。

サーバー側でJSONは、モデルの表現を作成するときに、計算された値を含めます。

name: 'Jack'
name_backwards: 'kcaJ' # example

クライアント側では、私が行うと、サーバーに送信するオブジェクトにbackbone_model.save(attributes)含まれます。name_backwardsこれは、サーバー上の実際の属性に対応していないため、理想的ではありません。

PATCHRails 3.2を使用しているため、オプションではありません。この問題を回避する方法はありますか?

4

2 に答える 2

1

サーバーが受け入れられないものを送信していることは、私には少し奇妙に思えます。2 つのオプションが表示されます。

  1. コントローラーで着信をフィルタリングしname_backwardsます。
  2. 送信を停止name_backwardsし、クライアントに対処させます。

1:name_backwardsの適当な部分から削除するだけなので簡単ですparams

2はもう少し複雑です。name_backwardsまず、出力される JSON への追加を停止します。name_backwards次に、モデルに次を追加できますparse

parse: function(response) {
    response.name_backwards = reverse(response.name);
    return response;
}

JavaScript で文字列を逆にする信頼できる方法については、この回答を参照してください。

name_backwards次に、モデルの で無視する必要がありますtoJSON:

toJSON: function() {
    var o = _(this.attributes).clone(); // This is what the standard toJSON does.
    delete o.name_backwards;
    return o;
}

次に、モデルをテンプレートにフィードするときserializeの代わりに使用するメソッドを追加toJSONします。

serialize: function() {
    return _(this.attributes).clone();
}

モデルとテンプレートの間で一貫したインターフェースを持つ簡単な方法が必要な場合は、簡単にパッチserializeを適用できます。Backbone.Model.prototype

于 2013-07-05T21:58:15.247 に答える