我有类似的东西
<script id="template1" type="text/html">
<h3>Template 1</h3>
<button id="templButton" data-bind="click: swap">Go to template 2</button>
</script>
<script id="template2" type="text/html">
<h3>Template 2</h3>
<button id="templButton" data-bind="click: swap">Go to template 2</button>
</script>
<div data-bind="template: theTemplate"></div>
<script>
ko.applyBindings({
theTemplate: ko.observable("template1"),
swap: function () {
this.theTemplate("template2");
}
});
</script>
但它只更改了一次模板,仅从tempalate1
更改为template2
。如何切换到两个模板。
它应该像
ko.applyBindings({
theTemplate: ko.observable("template1"),
swap: function () {
if (this.theTemplate==template1)
{
this.theTemplate("template2");
}
else
{
this.theTemplate("template1");
}
}
});
但是this.theTemplate("template2")
在当前上下文中做什么操作()
是什么?如何检查状态为theTemplate
?
答案 0 :(得分:1)
你只是错过了几件事:
所以:
if (this.theTemplate() == 'template1') {
ko.applyBindings({
theTemplate: ko.observable("template1"),
swap: function() {
if (this.theTemplate() == 'template1') {
this.theTemplate("template2");
} else {
this.theTemplate("template1");
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script id="template1" type="text/html">
<h3>Template 1</h3>
<button id="templButton" data-bind="click: swap">Go to template 2</button>
</script>
<script id="template2" type="text/html">
<h3>Template 2</h3>
<button id="templButton" data-bind="click: swap">Go to template 2</button>
</script>
<div data-bind="template: theTemplate"></div>