質問

私はこれを行うためのいくつかのソリューション(むしろハックと呼ぶ)を持っていますが、問題に対するエレガントなソリューションを探しています。これが問題です。ゆっくりと進んでください

私は手に入れました WebMethods の中に index.aspx ajaxのページ(create,update,delete)リクエストが送信されます。 a 単一のWebMethodは、これらすべての種類の操作を処理できません, 、したがってaの Person モデル3つの方法があります

  1. CreatePerson (attributes)
  2. UpdatePerson (attributes)
  3. DeletePerson(personId)

したがって、私は以下のようにハッキーなプロセスを使用しています、JavaScript関数名はサーバー上のそれぞれの方法に対応しています

CreatePerson:function(){

model.url = "/CreatePerson";

},
UpdatePerson:function(){

model.url = "/UpdatePerson";

},
DeletePerson:function(){

model.url = "/DeletePerson";

}

上記の方法は、人モデルをレンダリングするビューで宣言されています。モデルのurlrootはです index.aspx したがって、Ajax呼び出しはにルーティングされます createpersonメソッド内のindex.aspx操作が作成されたとき すなわち index.aspx/createperson

委任すると、機能を同期するために委任すると、JSアプリケーションのすべてのモデルにオーバーライドしますが、これは起こりたくありません。

質問

ASP.NETページでbackbone.jsを使用する場合、AJAXリクエストが作成される前に、モデルエンドポイントに従ってURLを準備できますか?

役に立ちましたか?

解決

上書きする必要があります sync コレクションが1つを持っている場合は、単一モデルで作業している場合はモデルのいずれかの方法です。そして、それが作成、更新、または破壊されたかどうかに応じて、それに応じてURLを変更し、右のURLセットを持っている間にすべてのパラメーターをさらに通過するバックボーン同期を呼び出します。

var Model = Backbone.Model.extend({

    ...

    sync: function(method, model, options) {

      // here method param can be either "read", "create", "update", "destroy"
      // set your url based on its value

      Backbone.sync.call(this, method, this, options); 
      // if your super class had custom sync as well you'd have to call 
      // Model.__super__.sync.call(...)
    }

});

私はASPプログラマーではありませんが、.NETとの休憩インターフェースを持つことはできませんか?物事がずっと楽になります:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top