かなり複雑な単一ページ アプリケーションを実装しており、「Jquery-context-menu」ツールボックスを使用することにしました。ただし、基本的な質問があります。2 日間検索し、Web で情報を読んだ後、アイデアがいくらか出てきました。
基本的な質問は次のとおりです。もしそうなら、メニューがまだオンになっている間に、メニューの外から更新機能 (つまり、無効化機能) にアクセスする方法は?
シナリオ: ゲームを実装しています。ユーザーがアクティブ化できるアイコンのコンテキスト メニューとして「jquery コンテキスト メニュー」を使用します (rpg タイプのアイコンを考えてください)。クリックしてアクティブ化すると、(数秒後に) 自動的に非アクティブ化され、しばらくすると再びアクティブ化できるようになります。メニューが開いたままの状態で、メニューを有効または無効にすることで、メニューがアイコンのこの状態をキャプチャしているということです。
ここにあるように、同じメニューでボタンを押すことによって、メニュー項目の可視性を変更する方法の 1 つの例があります。
http://medialize.github.io/jQuery-contextMenu/demo/disabled-ching.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、変数のハンドルを持っていません (少なくともそれが現在の意見)。誰かが解決策を見つけるのを手伝ってくれたり、何を試してみるべきか (まだ試していないこと) を教えてくれたりすると、とてもうれしいです。