本文介绍了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查询不更新淘汰视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!