2012-03-11 68 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獲取並設置domelement節點。

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

支持所有瀏覽器:http://www.quirksmode.org/dom/w3c_core.html

+0

如果你曾經在日本,冷啤酒在等待。你美麗! – Chin 2012-03-11 16:29:57

+0

另外,感謝您的鏈接。 – Chin 2012-03-11 16:31:39

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 2012-03-11 15:43:24