2017-03-20 8 views
0

私はそこにiframeを持つノックアウトアプリケーションを持っています。私はノックアウトの関数をiframeの中から呼び出す必要があります。iframe内から親のノックアウト機能を呼び出しますか?

私はparent.myFunction()がうまくいくはずだと言って、ここでいくつかの答えを見たことがありますが、ノックアウトを使用していない場合は私のために働いていないと思います。ここで

は剥ぎ取ら例です。https://embed.plnkr.co/pCZCv73UpxTLOpClwxdX/

にはどうすればいいのiFrame内のボタンはインラインフレームの1つの外と同じ機能を呼び出すことができますか?

ありがとうございました。

答えて

1

以下のbindIframe custom bindingを使用すると、かなり簡単になります。基本的には、iframeドキュメントが読み込まれるとko.applyBindingsが呼び出されます。

ko.bindingHandlers.bindIframe = { 
    init: function(element, valueAccessor) { 
     function bindIframe() { 
      try { 
       var iframeInit = element.contentWindow.initChildFrame, 
        iframedoc = element.contentDocument.body; 
      } catch(e) { 
       // ignored 
      } 
      if (iframeInit) 
       iframeInit(ko, valueAccessor()); 
      else if (iframedoc) 
       ko.applyBindings(valueAccessor(), iframedoc); 
     }; 
     bindIframe(); 
     ko.utils.registerEventHandler(element, 'load', bindIframe); 
    } 
}; 

https://embed.plnkr.co/Hvv2Mx3NZKc9iuS61TXD/

+0

私はあなたが提供plunkerリンクの変更が表示されません。 – TerminatioN

+0

私は忘れる必要があります。今更新されました。 –

+0

ありがとうございます。 iframeのjavascript関数内で親関数を呼び出す方法はありますか、html要素にdatabindタグを使用する必要はありますか? – TerminatioN

関連する問題