Javascript 检查是否显示与当前ViewModel关联的DOM?
我有以下用例:Javascript 检查是否显示与当前ViewModel关联的DOM?,javascript,knockout.js,knockout-3.0,Javascript,Knockout.js,Knockout 3.0,我有以下用例: 我正在创建淘汰自定义组件: ko.components.register("detail", { template: {require: "text!components/detail.html"}, viewModel: DetailViewModel }); 在DetailViewModel中,我正在执行一些需要60秒才能完成的操作,例如XHR。如果XHR失败,我将向用户显示一个关于它的通知 现在我的问题是XHR需要60秒,当它仍然处于“挂起”状态时,
- 我正在创建淘汰自定义组件:
ko.components.register("detail", { template: {require: "text!components/detail.html"}, viewModel: DetailViewModel });
- 在
中,我正在执行一些需要60秒才能完成的操作,例如XHR。如果XHR失败,我将向用户显示一个关于它的通知DetailViewModel
DetailViewModel
函数中确定关联的DOM元素在页面上是否仍然“存在”?现在我正在使用VM的一些自定义属性(“isVisible
”),并将DetailViewModel.prototype.dispose
中的属性更改为false
,但我想知道是否有一种更简单/更干净的方法可以在不声明任何自定义属性的情况下执行此操作?您可以使用“createViewModel”组件注册中的处理程序,它接收componentInfo作为第二个参数。“componentInfo.element”是组件的DomeElement。因此,您可以访问它并检查其可见性
ko.components.register('detail', {
viewModel: {
createViewModel: function(params, componentInfo) {
var domElement = componentInfo.element;
// You can pass domElement as a parameter for the DetailViewModel
return new DetailViewModel(params);
}
},
template: {require: "text!components/detail.html"}
});