Breeze 如何创建一个;“装载”;微风中的纺纱机?
我正在尝试创建一个加载微调器,当breeze与服务器通信时将显示该微调器。Breeze中是否有某些属性仅在Breeze向服务器发送数据、接收数据或等待响应时(例如,在进行异步调用但尚未响应后)才为“true”?我想把这个数据绑定到一个敲除的可观测数据上,把旋转器绑定到这个可观测数据上 谢谢Breeze 如何创建一个;“装载”;微风中的纺纱机?,breeze,Breeze,我正在尝试创建一个加载微调器,当breeze与服务器通信时将显示该微调器。Breeze中是否有某些属性仅在Breeze向服务器发送数据、接收数据或等待响应时(例如,在进行异步调用但尚未响应后)才为“true”?我想把这个数据绑定到一个敲除的可观测数据上,把旋转器绑定到这个可观测数据上 谢谢 Elior我看不到Breeze查询时设置或观察到的任何属性,但如果您使用datacontext或某个JavaScript模块进行数据调用,您可以这样做- 编辑 考虑到John的评论,我添加了一种标记式的跟踪每
Elior我看不到Breeze查询时设置或观察到的任何属性,但如果您使用datacontext或某个JavaScript模块进行数据调用,您可以这样做- 编辑 考虑到John的评论,我添加了一种标记式的跟踪每个查询的方法
var activeQueries = ko.observableArray();
var isQuerying = ko.computed(function () {
return activeQueries().length !== 0;
});
var toggleQuery = function (token) {
if (activeQueries.indexOf(token) === -1)
{ activeQueries.push(token); }
else { activeQueries.remove(token); }
};
var getProducts = function (productsObservable, forceRemote) {
// Don't toggle if you aren't getting it remotely since this is synchronous
if (!forceRemote) {
var p = getLocal('Products', 'Product','product_id');
if (p.length > 0) {
productsObservable(p);
return Q.resolve();
}
}
// Create a token and toggle it
var token = 'products' + new Date().getTime();
toggleQuery(token);
var query = breeze.EntityQuery
.from("Products");
return manager.executeQuery(query).then(querySucceeded).fail(queryFailed);
function querySucceeded(data) {
var s = data.results;
log('Retrieved [Products] from remote data source', s, true);
// Toggle it off
toggleQuery(token);
return productsObservable(s);
}
};
您需要确保所有的失败逻辑也能切换查询
然后在视图中放置微调器的位置
var spinnerState = ko.computed(function () {
datacontext.isQuerying();
};
使用spin.js
这很简单。在执行查询之前将其显示出来,并在查询成功或失败后禁用它。如果一次查询1,这将起作用,但一旦开始运行多个,该标志需要知道所有活动查询。我不确定向服务器tho显示每个查询的微调器是否有价值。相反,我显示了一个微调器,并禁用用户故事的元素。例如,用户转到一个新屏幕,微调器出现,直到屏幕准备就绪。如果你愿意的话,在一个工作单元中,有几个操作会导致此等待。嗨,John,感谢您提供的详细示例和解释。这也是我想做的。在阅读您的示例时,我在想-是否可以重载“manager.executeQuery”以便将此功能添加到其中?或者可以添加一个原型函数(manager.prototype.executeQuery或类似的函数)来代替“real”executeQuery,并向manager添加另一个原型变量,该变量将在调用“real”manager.executeQuery之前设置为true,然后再调用false。你怎么看待这种可能性?再次感谢!Elioron我可以通过添加原型或查询的附加层看到的一个问题是,在不深入研究任何案例的情况下,您可能会触发查询属性,并且可能不会总是“停止”它。这也可能发生在我修改后的解决方案上,但至少你有更多的控制权。我对答案进行了编辑,为每个查询包含一个标记,以跟踪多个查询。谢谢John和Kadumel,我将进一步探索这些选项,并在接下来的几天在这里报告结果。谢谢你们两位!你好,约翰和卡杜梅尔。谢谢你们,你们的支持对我来说很有价值,但我现在决定“每次通话”处理这种情况,而不是一般情况。如果我回到问题上来,我会在这里报告解决方案。埃利奥