Knockout.js 敲除-模板何时重新呈现
我们有一个简单的模板,可以在可编辑和不可编辑之间切换。基本上,它只是隐藏输入字段并显示一个范围,或者相反Knockout.js 敲除-模板何时重新呈现,knockout.js,Knockout.js,我们有一个简单的模板,可以在可编辑和不可编辑之间切换。基本上,它只是隐藏输入字段并显示一个范围,或者相反 <script type="text/html" id="inputTextTemplate"> <input type="text" data-bind="value: field, visible: $data.isEdit" /> <span data-bind="text: field, visible: !$data.isEdit"&g
<script type="text/html" id="inputTextTemplate">
<input type="text" data-bind="value: field, visible: $data.isEdit" />
<span data-bind="text: field, visible: !$data.isEdit"></span>
</script>
我们也有一些通过JQuery应用的样式,但问题是每次模板从可编辑和不可编辑切换时,它都会被重新渲染,这些样式都会消失
这里是问题的一个小插曲
为什么会这样?我们如何解决这个问题,使模板只呈现一次?您的fiddle实际上没有通过jQuery应用任何样式,但我在使用时遇到了类似的问题 解决办法是不要这样做。考虑是否可以使用ViewModel中的可观察对象在模板中应用样式。否则,每次重新提交模板时都需要通过jQuery重新应用这些样式。
您可以执行以下操作:
HTML代码
我为这两个控件添加了css类,如
css:{first:$data.isEdit}
和css:{second:!$data.isEdit}
请阅读 还有,这是
希望它能对您有所帮助。看起来问题在于我发送的是一个值,而不是一个可观察值。若我制作一个可观察或计算的模板,那个么模板只渲染一次。 所以在调用模板之前
isEdit: isEdit() == 'true'
如果我创建一个计算
this.isEditable = ko.computed(function(){
return self.isEdit() == 'true';
});
并称之为
isEdit: isEditable
它按预期工作
在我的示例中,它是一个字符串,因为单选按钮将其设置为“真”或“假”。如果我只返回self.isEdit()代码>则“false”也将为true。感谢您提供的示例,但在这种情况下没有帮助。我应该详细说明一下这个问题。我们还做了一些事件连接、焦点、模糊、JQuery ui控件。。。这不能通过css来完成。
this.isEditable = ko.computed(function(){
return self.isEdit() == 'true';
});
isEdit: isEditable