knockout组件 - 带回调的viewmodel构造函数

时间:2015-06-30 21:33:08

标签: javascript mvvm knockout.js

我有一个viewmodel,它有一个回调作为构造函数的参数 - 称之为“onReady”,以及其他必要的参数。在回调执行之前,它不能绑定到视图(模板)。有没有什么方法可以使用淘汰组件?似乎淘汰组件试图避免这种情况,因为“createViewModel”需要同步。

1 个答案:

答案 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>