Javascript kendo视图模型更改事件仅适用于用户更改
我有一个剑道视图模型,并试图检测页面上的用户更改,以便在他们即将导航而不保存时(使用onbeforeunload事件处理程序)发出警告。我绑定到视图模型更改事件以将“更改”布尔值设置为true。但是,在document.ready完成后,许多视图模型字段会从其数据源异步加载,从而触发我无法区分的更改事件。是否有某种方法可以检测所有字段何时检索完它们的数据,这样我就不会将它们的绑定更新误认为是用户的更改Javascript kendo视图模型更改事件仅适用于用户更改,javascript,kendo-ui,Javascript,Kendo Ui,我有一个剑道视图模型,并试图检测页面上的用户更改,以便在他们即将导航而不保存时(使用onbeforeunload事件处理程序)发出警告。我绑定到视图模型更改事件以将“更改”布尔值设置为true。但是,在document.ready完成后,许多视图模型字段会从其数据源异步加载,从而触发我无法区分的更改事件。是否有某种方法可以检测所有字段何时检索完它们的数据,这样我就不会将它们的绑定更新误认为是用户的更改 <script> var myViewModel = kendo.obse
<script>
var myViewModel = kendo.observable({
someField: "testing",
//...Other fields with data sources that get filled in asynchronously
//Problem is that these are bound to fields in html and trigger change event
changed: false,
loading: false,
fetch: function () {
this.set("loading", true);
//...
this.set("loading", false);
}
});
</script>
<div id="myView">
<input type="text" data-bind="value: someField" class="k-textbox" />
<!--Other fields bound to fields in myViewModel-->
</div>
<script>
$(document).ready(function () {
myViewModel.fetch().then(function () {
kendo.bind($("#myView"), myViewModel);
}, function (error) {
});
});
myViewModel.bind("change", function (e) {
if (myViewModel.loading === false) {
myViewModel.changed = true;
}
});
window.onbeforeunload = function () {
if (myViewModel.changed) {
return "You haven't saved your changes!";
}
}
</script>
var myViewModel=kendo.observable({
someField:“测试”,
//…包含异步填充的数据源的其他字段
//问题是,这些被绑定到html中的字段并触发更改事件
更改为:false,
加载:false,
获取:函数(){
此参数设置(“加载”,真);
//...
此参数设置(“加载”,错误);
}
});
$(文档).ready(函数(){
myViewModel.fetch().then(函数(){
bind($(“#myView”)、myViewModel);
},函数(错误){
});
});
myViewModel.bind(“更改”,函数(e){
if(myViewModel.loading==false){
myViewModel.changed=true;
}
});
window.onbeforeunload=函数(){
如果(myViewModel.changed){
return“您还没有保存更改!”;
}
}
是否考虑从用于获取数据的方法中返回承诺?