我有一个viewmodel,它有一个回调作为构造函数的参数 - 称之为“onReady”,以及其他必要的参数。在回调执行之前,它不能绑定到视图(模板)。有没有什么方法可以使用淘汰组件?似乎淘汰组件试图避免这种情况,因为“createViewModel”需要同步。
答案 0 :(得分:0)
异步工作可以通过viewmodel或脚本文件完成,找到附带的样本。
// ViewModel object
// Really? callback as a constructor parameter?
function ViewModel(callback){
// busy message
this.message=ko.observable("loading");
var _this=this;
callback(function(response){
_this.message(response);
});
}
// register the component
ko.components.register('onready', {
viewModel: function(params) {
return params.viewModel
},
template:
'<div data-bind="text:message"></div>'
});
// make viewmodel instance
var viewModel=new ViewModel( function(response){
// start the async work
window.setTimeout( function(){
response("ready!");
},1000);
}
);
// plain normal ko
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<onready params="viewModel:$data"></onready>