【发布时间】:2019-10-01 17:10:58
【问题描述】:
我想听一个名为 isDesktop 的属性,并在它更改时触发显示/隐藏选项面板。问题出在扩展器中,我唯一可以访问的部分是目标、选项和 this,它们都不能访问显示/隐藏方法所在的视图模型。
这在我切换到使用 Require JS 和组件之前是有效的,因为它使用全局范围来访问这些东西。最好不要使用全局范围,但它确实限制了对必要属性的访问。我已经尝试绑定它,但这只能让我访问不提供访问权限的全局窗口对象。
ko.extenders.responsive = function(target, option) {
target.subscribe(function(isDesktop) {
if (isDesktop) //showOptions()
else //hideOptions()
})
return target
}
//
isDesktop: ko.observable(false).extend({ responsive: true }),
我认为有一种方法可以访问从扩展器调用扩展器的范围。如果不是,那么可以尝试其他哪些解决方案?
【问题讨论】:
-
不要为参数“option”传递值“true”,因为无论如何似乎都不会使用它,而是传递对您的视图模型的引用。
标签: javascript knockout.js requirejs