检查是否显示与当前视图模型关联的 DOM
Check if DOM associated with current ViewModel is displayed?
我有以下用例:
-
我正在创建挖空自定义组件:
ko.components.register("detail", { template: {require: "text!components/detail.html"}, viewModel: DetailViewModel });
-
在
DetailViewModel
内部,我正在执行一些需要 60 秒才能完成的 XHR。如果 XHR 失败,我会向用户显示有关它的通知。
现在我的问题是 XHR 需要 60 秒,当它仍然处于"挂起"状态时,用户导航到不再包含"详细信息"组件的页面,然后 XHR 失败。在这种情况下,我不想显示任何通知,仅仅是因为如果不再显示原始组件,则显示失败通知是没有用的。
有没有办法在DetailViewModel
函数内部确定关联的 DOM 元素是否仍然"存在于"页面上?现在我正在使用 VM 的一些自定义属性("isVisible
")并将属性更改为 DetailViewModel.prototype.dispose
中的 false
,但我想知道是否有一种更简单/更干净的方法可以在不声明任何自定义属性的情况下做到这一点?
您可以在组件注册中使用"createViewModel"处理程序,该处理程序将 componentInfo 作为第二个参数接收。"componentInfo.element"是一个组件的DOMElement。因此,您可以访问它并检查其可见性。
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"}
});
相关文章:
- ExtJS 4:编写带有模型关联的嵌套XML
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- 选择框中带有关联的ng模型,选项中带有ng重复
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 何时指定与主干中的集合/视图关联的模型
- Rails4:从Javascript调用的Action;t请参阅模型关联(NoMethodError)
- 与设计用户相关联的多个模型-根据角色选择填写一个模型
- 嵌套的XML数据和ExtJS模型关联
- 检查是否显示与当前视图模型关联的 DOM
- 煎茶触摸 2 模型关联保存不正确的数据进行存储
- 主干.js视图和模型关联
- Emberjs 深度模型关联在模板中不可用
- Django Tastypie YUI模型关联foreignKey id而不是resource_uri
- json中的Sencha Touch 2模型关联
- 余烬对来自余烬-数据模型关联的另一个控制器的数据进行排序
- 风帆模型关联[j]
- SailsJS v0.10多模型关联
- Sails.js:如何使用模型关联填充数组
- ExtJS4:何时使用完整命名空间VS仅对象名称(模型关联)
- 当提取模型关联时,Cakephp控件