Backbone.jsモデル用のフライURLの生成
-
27-10-2019 - |
質問
私はこれを行うためのいくつかのソリューション(むしろハックと呼ぶ)を持っていますが、問題に対するエレガントなソリューションを探しています。これが問題です。ゆっくりと進んでください
私は手に入れました WebMethods
の中に index.aspx
ajaxのページ(create
,update
,delete
)リクエストが送信されます。 a 単一のWebMethodは、これらすべての種類の操作を処理できません, 、したがってaの Person
モデル3つの方法があります
CreatePerson (attributes)
UpdatePerson (attributes)
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との休憩インターフェースを持つことはできませんか?物事がずっと楽になります:)