Javascript kendo视图模型更改事件仅适用于用户更改

Javascript kendo视图模型更改事件仅适用于用户更改,javascript,kendo-ui,Javascript,Kendo Ui,我有一个剑道视图模型,并试图检测页面上的用户更改,以便在他们即将导航而不保存时(使用onbeforeunload事件处理程序)发出警告。我绑定到视图模型更改事件以将“更改”布尔值设置为true。但是,在document.ready完成后,许多视图模型字段会从其数据源异步加载,从而触发我无法区分的更改事件。是否有某种方法可以检测所有字段何时检索完它们的数据,这样我就不会将它们的绑定更新误认为是用户的更改 <script> var myViewModel = kendo.obse

我有一个剑道视图模型,并试图检测页面上的用户更改,以便在他们即将导航而不保存时(使用onbeforeunload事件处理程序)发出警告。我绑定到视图模型更改事件以将“更改”布尔值设置为true。但是,在document.ready完成后,许多视图模型字段会从其数据源异步加载,从而触发我无法区分的更改事件。是否有某种方法可以检测所有字段何时检索完它们的数据,这样我就不会将它们的绑定更新误认为是用户的更改

<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“您还没有保存更改!”;
}
}

是否考虑从用于获取数据的方法中返回承诺?