Events 剔除可观测下标
我们正在使用HTML前端(主要是视图)和python后端(主要是文档)开发一个桌面应用程序 使用输入元素更新文档。 调用updateView函数(打开文档、撤消/重做、小控件…)更新视图 因此,当用户键入某些内容时,我们需要通知文档。通过订阅Observable并调用updateDocument来检测更改 主要问题是,如果后端直接更新视图,我们不需要通知文档 如何使用updateView更新视图而不再次通知文档 查看HTML:Events 剔除可观测下标,events,knockout.js,subscribe,Events,Knockout.js,Subscribe,我们正在使用HTML前端(主要是视图)和python后端(主要是文档)开发一个桌面应用程序 使用输入元素更新文档。 调用updateView函数(打开文档、撤消/重做、小控件…)更新视图 因此,当用户键入某些内容时,我们需要通知文档。通过订阅Observable并调用updateDocument来检测更改 主要问题是,如果后端直接更新视图,我们不需要通知文档 如何使用updateView更新视图而不再次通知文档 查看HTML: <!DOCTYPE html> <html lan
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<script type="text/javascript" src="jsext/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="jsext/knockout-2.3.0.js"></script>
<script type="text/javascript" src="jsext/knockout.mapping.js"></script>
<script type="text/javascript" src="js/document.js"></script>
<script type="text/javascript" src="js/view.js"></script>
</head>
<body>
<div id="datas">
<div>
<p>
<label>x : </label>
<input type="text" data-bind="value: x"/>
</p>
<p>
<label>y : </label>
<input type="text" data-bind="value: y"/>
</p>
<p>
<label>z : </label>
<input type="text" data-bind="value: z"/>
</p>
<p>
<label>rx : </label>
<input type="text" data-bind="value: rx"/>
</p>
<p>
<label>ry : </label>
<input type="text" data-bind="value: ry"/>
</p>
<p>
<label>rz : </label>
<input type="text" data-bind="value: rz"/>
</p>
<p>
<label>s : </label>
<input type="text" data-bind="value: s"/>
</p>
</div>
</div>
</body>
</html>
谢谢您可以添加一个名为silentUpdate的字段来禁用事件管理器
function makeObservable() {
var ob = ko.observable( 0.0 );
ob.subscribe( function (val) {
if(_viewModel.silentUpdate) return;
updateDocument( ko.toJSON( _viewModel ) );
});
return ob;
}
function Transform() {
this.silentUpdate = false;
...
}
function updateView( jsonDocument ){
_viewModel.silentUpdate = true;
var jsonDocument = JSON.parse( jsonDocument );
_viewModel.x( jsonDocument[ "x" ] );
...
_viewModel.__type__( jsonDocument[ "__type__" ] );
_viewModel.silentUpdate = false;
}
我希望这能有所帮助。非常感谢,这不是我一直在寻找的解决方案,但仍然非常有效。
function makeObservable() {
var ob = ko.observable( 0.0 );
ob.subscribe( function (val) {
if(_viewModel.silentUpdate) return;
updateDocument( ko.toJSON( _viewModel ) );
});
return ob;
}
function Transform() {
this.silentUpdate = false;
...
}
function updateView( jsonDocument ){
_viewModel.silentUpdate = true;
var jsonDocument = JSON.parse( jsonDocument );
_viewModel.x( jsonDocument[ "x" ] );
...
_viewModel.__type__( jsonDocument[ "__type__" ] );
_viewModel.silentUpdate = false;
}