2016-04-01 6 views
1

私はこのサイトの<html>要素にバインディングを追加しようとしていますが、それは効果がないようです。Knockout.js binding in <html>

body要素外の要素にバインディングを適用する際に制限はありますか?

<html xmlns="http://www.w3.org/1999/xhtml" data-bind="css: {'visible-menu' : $root.panels.visibleMenu }"> 

答えて

3

applyBindingsdefaults to using <body>あなたはルートノードを通過しない場合:

rootNode = rootNode || window.document.body; // Make "rootNode" parameter optional 

あなたが<html>ノードを渡すと、予想通り、それが動作するはずです。あなたはjQueryのを使用している場合は、これを行う1つの方法は、the :root selectorを使用することです:

ko.applyBindings(viewModel, $(':root').get(0)); 

またはタグ名によって:

ko.applyBindings(viewModel, document.getElementsByTagName('html')[0]); 
+0

これはいくつかの方法でサイトをより脆弱になります場合は、知っていますか? – Alvaro