有条件地渲染容器
Render container conditionally
本文关键字:有条件 更新时间:2023-09-26
是否可以根据knockout.js
的条件为模板渲染容器?
这行不通,但显示了我想要做的:
<div data-bind="foreach: items">
<!-- ko if: $data.startContainer -->
<div class="container">
<!-- ko -->
<div data-bind="html: $data.contentElement"></div>
<!-- ko if: $data.endContainer -->
</div>
<!-- ko -->
</div>
在knockout.js github网站上发现一个线程,表明这是不可能与本地模板模型:https://github.com/SteveSanderson/knockout/issues/307
显然,结束注释被理解为未结束的div标记的内部。
我的希望是在动态模板上,但也失败了,如小提琴所示。
http://jsfiddle.net/XbdGs/3/<script type="text/html" id="withContainer">
<div class="container">
<!-- ko template: 'withoutContainer' -->
<!-- /ko -->
</div>
</script>
由此我得出结论,你可以尝试3 foreach解决方案,使用Posthuma建议或退到另一个模板引擎,如jquery。如knockout文档中所提到的。
http://knockoutjs.com/documentation/template-binding.html您可以通过自定义绑定来实现。
更新:
如果您想打开一个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>
可能有更好的方法来编写这段代码,并且可能使用knockout内置绑定,但这应该足以让您入门。
http://jsfiddle.net/posthuma/f5wG4/2相关文章:
- 通过js在新选项卡中有条件地打开url
- jQuery-有条件地附加HTML
- 有条件更新d3.js力图中节点的最佳方法
- Woocommerce产品选项有条件
- 有条件地在选项标记中应用布尔属性
- ADF:有条件地加载javascript资源
- 如何有条件地更改角度中的orderBy参数
- 无法在有条件呈现的富:面板上提交h:form
- 有条件地与react路由器链接
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- CSS根据属性的可用性有条件地应用样式
- 将字段设置为有条件地使用所需的字段验证器
- 将https替换为有条件的锚标记Javascript
- JavaScript while循环没有'不能在有条件的情况下工作
- 如何用d3有条件地移除元素
- 有条件刷新页面-如何设置引用人
- 有条件地创建ajax url参数以与jQuery Validate一起使用
- 在 React JSX 中有条件地呈现组件部分
- 如果只有一次有条件,如何执行