我知道 .net 和 javascript,但我是 sencha 的菜鸟。我正在使用客户端上的 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 post 提交表单)。
我有以下问题:
- 我如何做到这一点?
- 当我在服务器端 api 中有复杂类型时会发生什么?(注意:这将很快需要,因为 asp.net web api 仅支持单一复杂类型,所以无论如何我都必须重构“类参数”)?
- 这是推荐的方法吗?
完整代码如下:
店铺:
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();
},