Breeze.js查询不更新淘汰视图 [英] Breeze.js query does not update knockout view

查看:69
本文介绍了Breeze.js查询不更新淘汰视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在通过breeze.js查询数据,这是第一次工作正常。第二次没有更新视图。



html

  < a id =linkQDate>按最新排序< / a> 
< a id =linkQScore>按分数排序< / a>

< div id =questionWrapper>
< ul data-bind =foreach:results>
< li>
< strong>< span data-bind =text:Score>< / span>< / strong>
< span data-bind =text:Titel>< / span>
< / li>
< / ul>
< / DIV>

js

  $(document).ready(function(){
var manager = new breeze.EntityManager('/ breeze / dbentities');
var isApplied = false;
var dmodel ;

$(#linkQDate)。click(function(){
var query = breeze.EntityQuery.from(Questions)。orderBy(Date);
manager.executeQuery(query).then(querySucceeded);
function querySucceeded(data){
dmodel = data;
if(!isApplied){

ko.applyBindings(dmodel,$(#questionWrapper)[0]);
isApplied = true;
}
}

});
$(#linkQScore)。click(function(){
var query = breeze.EntityQuery.from(Questions)。orderBy(Score);
manager.executeQuery(query) 。$($)
ko.applyBindings(dmodel,$(#questionWrapper);
函数querySucceeded(data){
dmodel = data;
if(!isApplied) )[0]);
isApplied = true;
}
}

});
});


解决方案

如果你只是使用纯JS对象, 。因为它不知道底层数据何时发生变化。使用映射插件使其工作:



$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ = false;
var dmodel;

function querySucceeded(data){
if(!isApplied){
dmodel = ko.mapping.fromJS(data);
ko.applyBindings(dmodel,$(#questionWrapper)[0]);
isApplied = true;
} else {
ko.mapping.fromJS(data,dmodel) ;
}
}

$(#linkQDate)。click(function(){
var query = breeze.EntityQuery.from(Questions .orderBy(Date);
manager.executeQuery(query).then(querySucceeded);
});

$(#linkQScore)。 (){
var query = breeze.EntityQuery.from(Questions)。orderBy(Score);
});
});


I am querying data via breeze.js which works fine the first time. The second time the view isn't updated.

html

<a id="linkQDate">Order by Newest</a>
<a id="linkQScore">Order by Score</a>

<div id="questionWrapper">
    <ul data-bind="foreach: results">
    <li>
       <strong><span data-bind="text: Score"></span></strong>
       <span data-bind="text: Titel"></span>
    </li>
    </ul>
</DIV>

js

$(document).ready(function () {
var manager = new breeze.EntityManager('/breeze/dbentities');
var isApplied = false;
var dmodel;

$("#linkQDate").click(function () {
    var query = breeze.EntityQuery.from("Questions").orderBy("Date");
    manager.executeQuery(query).then(querySucceeded);
    function querySucceeded(data) {
        dmodel = data;
        if (!isApplied) {

            ko.applyBindings(dmodel, $("#questionWrapper")[0]);
            isApplied = true;
       }
    }

});
$("#linkQScore").click(function () {
    var query = breeze.EntityQuery.from("Questions").orderBy("Score");
    manager.executeQuery(query).then(querySucceeded);
    function querySucceeded(data) {
        dmodel = data;
        if (!isApplied) {
            ko.applyBindings(dmodel, $("#questionWrapper")[0]);
            isApplied = true;
        }
    }

});
});

解决方案

If you just using plain JS objects it will not work. Because it does not know when underlying data changes. Use mapping plugin for this to work:

$(document).ready(function () {
    var manager = new breeze.EntityManager('/breeze/dbentities');
    var isApplied = false;
    var dmodel;

    function querySucceeded(data) {
        if (!isApplied) {
            dmodel = ko.mapping.fromJS(data);
            ko.applyBindings(dmodel, $("#questionWrapper")[0]);
            isApplied = true;
        } else {
            ko.mapping.fromJS(data, dmodel);
        }
    }

    $("#linkQDate").click(function () {
        var query = breeze.EntityQuery.from("Questions").orderBy("Date");
        manager.executeQuery(query).then(querySucceeded);
    });

    $("#linkQScore").click(function () {
        var query = breeze.EntityQuery.from("Questions").orderBy("Score");
    });
});

这篇关于Breeze.js查询不更新淘汰视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆