2012-03-11 5 views
0

私はバインディングを適用する前に以下を変更する必要がある、ちょっと変わった使用例があります。ノックアウト置き換え - ネイティブバインディングディレクティブをオンザフライで

<!-- ko foreach: model.dogs--> 
html 
<!-- /ko --> 

HTML

にこれは私がこれまで持っているものですが、私は、DOM

var commented = $el.contents().filter(function(){ 
return this.nodeType == 8; 
}) 
commented.each(function(i, item){ 
//replace text 
//item.replace("dogs", "dogs2"); 
}) 

感謝任意のポインタにコメント要素を更新するかどうかはわかりません。

答えて

2

ノードのノードを取得してnodeValueを設定します。すべてのブラウザでサポートされている

item.nodeValue = item.nodeValue.replace('dogs', 'dogs2'); 

http://www.quirksmode.org/dom/w3c_core.html

+0

あなたが日本にいたなら、冷たいビールが待っています。あなたは美人です! – Chin

+0

また、リンクに感謝します。 – Chin

0

DOMを混乱させないでください。低レベルのDOM APIでコメントを変更しても、高レベルのビューは魔法のように更新されません。このような状況を処理する適切なViewModelを作成するだけです。

dogs1 = ko.observableArray([1,2,3]); 
dogs2 = ko.observableArray([4,5,6]); 

viewModel.dogGroup = ko.observable("dogs1"); 
viewModel.displayedDogs = ko.computed(function() { 
    return (viewModel.tab() == "dogs1" ? dogs1() : dogs2()); 
    }); 
+0

トリッキーな、私は、HTMLスニペットは、コメントでくるとこだわっています。これらのスニペットに異なるモデルを適用したいと思います。私はデータバインドの部分を変更して成功しましたが、コメントはまだありません。ありがとうございました – Chin

関連する問題