您可以通过自定义绑定来做到这一点。
更新:
如果您想打开一个 div 并从另一个项目关闭,自定义绑定将如下所示:
ko.bindingHandlers.myCustomBinding = {
update: function(element, valueAccessor, allBindings, data, context){
var value = valueAccessor();
var items = ko.utils.unwrapObservable(value);
var currentElement = element;
ko.utils.arrayForEach(items, function(item){
if(item.startContainer){
var container = document.createElement('div');
$(container).append(item.displayContent);
$(container).addClass("container");
currentElement = container;
}
else if(item.endContainer){
$(currentElement).append(item.displayContent);
$(element).append(currentElement);
currentElement = element;
}
else{
$(currentElement).append(item.displayContent);
}
});
}
};
HTML:
<div data-bind='myCustomBinding: items'></div>
编写此代码可能有更好的方法,并且可能使用敲除内置绑定,但这应该足以让您入门。
http://jsfiddle.net/posthuma/f5wG4/2