.net と javascript は知っていますが、煎茶初心者です。クライアントでsencha touch 2.0を使用し、サーバーでasp.net Web APIを使用してアプリケーションに取り組んでいます。アイテム (請求書) のリストをユーザーに表示する必要があります。
現在、サーバー側 API の形式は次のとおりです。
GetList(int userId, string[] locationsIds, ...) { ... }
クライアントでは、ストアに「autoLoad : false」があります。次のように、ストアのプロキシで setExtraParams を呼び出します。
billStore.getProxy().setExtraParams({
userId: getUserId(), //someFunction
locationIds: getUserSelectedLocations(), //someOtherFunction
});
しかし、これはパラメータをクエリ文字列に追加します(ps:まだ動作させることができませんでした)。これをリクエスト本文に含める方が理にかなっていると思います(httpポストを使用したフォーム送信に似ています)。
次の質問があります。
- どうすればこれを達成できますか?
- サーバー側の API に複雑な型があるとどうなりますか? (注: asp.net Web API は 1 つの複雑な型しかサポートしていないため、これはすぐに必要になるため、とにかく「クラスへの引数」をリファクタリングする必要があります)?
- これは推奨される方法ですか?
完全なコードは次のとおりです。
お店:
Ext.define('noobapp.store.Bills',{
extend: 'Ext.data.Store',
config: {
storeId: 'billStore',
model: 'noobapp.model.Bill',
sorter: 'BillFrom',
proxy: {
type: 'ajax',
url : 'http://localhost/noobapis/api/bill/outstanding',
reader: 'json'
}
}
});
コントローラ:
_fetchOutstandingBills : function(data){
console.log(data);
var me = faomobile.app.getController('noobapis.controller.Main');
var billStore = Ext.getStore('billStore');
if(!billStore) billStore = Ext.create('noobapis.store.Bills');
billStore.getProxy().setExtraParams({
userId: getUserId(),
locationIds: getUserSelectedLocations(),
});
billStore.load();
},