Breeze 如何创建一个;“装载”;微风中的纺纱机?

Breeze 如何创建一个;“装载”;微风中的纺纱机?,breeze,Breeze,我正在尝试创建一个加载微调器,当breeze与服务器通信时将显示该微调器。Breeze中是否有某些属性仅在Breeze向服务器发送数据、接收数据或等待响应时(例如,在进行异步调用但尚未响应后)才为“true”?我想把这个数据绑定到一个敲除的可观测数据上,把旋转器绑定到这个可观测数据上 谢谢 Elior我看不到Breeze查询时设置或观察到的任何属性,但如果您使用datacontext或某个JavaScript模块进行数据调用,您可以这样做- 编辑 考虑到John的评论,我添加了一种标记式的跟踪每

我正在尝试创建一个加载微调器,当breeze与服务器通信时将显示该微调器。Breeze中是否有某些属性仅在Breeze向服务器发送数据、接收数据或等待响应时(例如,在进行异步调用但尚未响应后)才为“true”?我想把这个数据绑定到一个敲除的可观测数据上,把旋转器绑定到这个可观测数据上

谢谢


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,我将进一步探索这些选项,并在接下来的几天在这里报告结果。谢谢你们两位!你好,约翰和卡杜梅尔。谢谢你们,你们的支持对我来说很有价值,但我现在决定“每次通话”处理这种情况,而不是一般情况。如果我回到问题上来,我会在这里报告解决方案。埃利奥