我需要使用进度条或加载程序指示器,并在我尝试查询Azure时启动它。 这是可能的,如何做到这一点。现在的查询示例,如您所见,我正在做手工制作:
var client = new WindowsAzure.MobileServiceClient('site', 'key');
var dataTable = client.getTable('table');
function GetAzureData(){
progress.start();
dataTable.take(12).where({condition:condition}).read().done(
function (d) {
//fill data
progress.completed();
}, function (err) {
progress.completed();
});
}
但是因为我有很多这样的方法,所以当我调用“where”或“read”ect并显示进度(loader)时,我需要拦截它。
答案 0 :(得分:1)
您可以将过滤器用于客户端对象,并将其应用于从客户端发出的所有请求。不幸的是,关于此功能的文档并不多,但您可以在this doc或documentation for the MobileServiceClient.withFilter
function上看到一些文档。
对于您的场景,实现与此类似:
var client = new WindowsAzure.MobileServiceClient('site', 'key');
var clientWhichTracksProgress = client.withFilter(function(request, next, callback) {
progress.start();
next(request, function(error, response) {
progress.completed();
callback(error, response);
});
});
var dataTable = clientWhichTracksProgress.getTable('table');
其余代码将是相同的(没有调用进度跟踪器)。
更新:我写了一篇博文,详细介绍了http://blogs.msdn.com/b/carlosfigueira/archive/2014/02/24/using-service-filters-with-the-mobile-services-javascript-sdk.aspx上JavaScript的服务过滤器。