我有一个奇怪的用例,我需要在应用绑定之前更改以下内容。
<!-- 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");
})
任何指针都非常赞赏。
答案 0 :(得分:2)
您可以使用nodeValue获取并设置domelement节点。
item.nodeValue = item.nodeValue.replace('dogs', 'dogs2');
答案 1 :(得分: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());
});