小编bri*_*n s的帖子

在breeze js查询完成后,knockout.js applybindings

问题: 如何构造我的代码,以便在执行ViewModel的所有查询之前不应用knockout绑定?

更新: 经过一些进一步的研究和实验后,我认为使用延迟函数的方法可能会有效.我已经尝试了一些实现,但是它只会在调用查询之前推迟,而不是直到所有查询结果都被处理完毕.我显然在这里做错了但是我的javascript foo很弱.

使用的技术: 实体框架5 w/Oracle,.Net 4 Web API,Knockout 2.2,Breeze 0.71.3

情况: Breeze用于调用Web API方法,该方法检索可枚举的POCO,填充knockout可观察数组,并且数组绑定到View中的select控件.

问题: 在将ViewModel绑定应用于View之前,breeze查询尚未完成且尚未填充knockout observable.返回查询结果时,UI将在5-7秒内无响应,同时填充ko observable,从而更新选择控件.根据记录,这似乎是问题...

cshtml文件:

<select data-bind="options: $root.brokers, value: 'id', optionsText: 'name'">
<script data-main="/BrokerCommission/Scripts/app/main" src="/BrokerCommission/Scripts/require.js"></script>
Run Code Online (Sandbox Code Playgroud)

main.js:

requirejs.config(
    {
        // well-know paths to selected scripts
        paths: {
            'breeze': '../breeze.debug', // debug version of breeze
            'text': '../text'// html loader plugin; see http://requirejs.org/docs/api.html#text
        }
    }
);

define(['logger', 'text', 'breeze'], function(logger) {

require(['vm.muni'],
function()
{
    logger.info('applying bindings');
    ko.applyBindings(my.vm);
});
Run Code Online (Sandbox Code Playgroud)

vm.muni是我的ViewModel javascript文件.这是一个暴露给exec查询的方法:

getAllBrokers = function () {
        dataservice.getBrokers()
            .then(processBrokerQueryResults) …
Run Code Online (Sandbox Code Playgroud)

knockout.js breeze

6
推荐指数
1
解决办法
1818
查看次数

标签 统计

breeze ×1

knockout.js ×1