【发布时间】:2020-01-24 05:32:11
【问题描述】:
https://jsbin.com/jigefipiye/edit?html,console,output
我有 2 个模板,一个使用可见和不可见绑定,一个使用 # if () #
<div>Template 1</div>
<div id="to-bind1" data-bind="source: Data" data-template="template1"></div>
<div>Template 2</div>
<div id="to-bind2" data-bind="source: Data" data-template="template2"></div>
<script id="template1" type="x">
<li>
# if (Readonly) { #
<span data-bind="text: Val"></span>
# } else { #
<input data-bind="value: Val" />
# } #
</li>
</script>
<script id="template2" type="x">
<li>
<span data-bind="visible: Readonly, text: Val"></span>
<input data-bind="invisible: Readonly, value: Val" />
</li>
</script>
<script>
var toBind1 = $("#to-bind1");
var toBind2 = $("#to-bind2");
var vm = kendo.observable({
Data: [{
Readonly: true,
Val: "Woot!"
}],
});
kendo.bind(toBind1, vm);
kendo.bind(toBind2, vm);
setTimeout(function() {
console.log('dfs')
vm.get('Data')[0].set('Readonly', false);
}, 5000)
</script>
5 秒后 Template2 切换到输入框,而 Template1 保持不变
问题是在 template2 中输入是隐藏的 我想要实现的是用 span 交换输入,反之亦然,而不是隐藏它
类似于 knockoutJS https://knockoutjs.com/documentation/if-binding.html 中的 if 绑定的东西
if(和 ifnot)与可见(和隐藏)的作用相似 绑定。不同之处在于,在可见的情况下,包含的标记 始终保留在 DOM 中并始终具有其数据绑定属性 已应用——可见绑定仅使用 CSS 来切换容器 元素的可见性。然而,if 绑定在物理上添加或 删除 DOM 中包含的标记,并且仅将绑定应用于 如果表达式为真,则为后代。
【问题讨论】:
标签: javascript jquery kendo-ui