我们正在实现一个相当复杂的单页应用程序,并决定使用“Jquery-context-menu”工具箱。但是,我们有一个基本问题,经过两天的搜索和阅读网络上的内容,我们有点没有想法。
基本问题是:如果是的话,如何在菜单仍然打开时从菜单外部访问更新功能(即禁用功能)?
场景:我们正在实现一个游戏。我们使用“jquery 上下文菜单”作为可由用户激活的图标的上下文菜单(想想 rpg 类型的图标)。通过单击激活它后,它将自动停用(几秒钟后),然后准备好在一段时间后再次重新激活。我们什么是菜单正在捕获图标的这种状态,通过启用或禁用菜单,同时菜单保持打开状态。
有一个示例说明如何通过在同一菜单中按下按钮来更改菜单项的可见性,如下所示:
http://medialize.github.io/jQuery-contextMenu/demo/disabled-changeing.html
但是,我们的目标是从外部更新菜单(通过淘汰订阅调用)。所以我们想做类似的事情:
myknockoutobservable.subscribe(function(newValue){
correctRefernceToThis.data('disableItem1', newvalue)});
而禁用的功能看起来像:
disabled: function(key, opt) {
return !this.data('cutDisabled')};
或者,如果这不起作用,我们也许可以直接调用更新函数
myKnockoutobservable.subscribe(function(newValue){
$.contextMenu.op.update(correctRefernceToOpt,correctRefernceToroot)});
然后在回调中查询可观察到的淘汰赛
if (!myKnockoutobservable) {
return true;}
else {
return false;
主要问题似乎是我们没有正确引用上下文,所以我们没有从 Jquery 上下文菜单外部处理正确的 this,opt,to root,变量(至少这是我们当前的观点)。如果有人可以帮助我们找到解决方案,或者甚至是一些可以尝试的好主意(我们还没有),我们将非常高兴。