Knockout.js KnockoutJS动态模板

Knockout.js KnockoutJS动态模板,knockout.js,Knockout.js,如果有人问过这个问题,请原谅。我在博客里搜索,搜索这个帖子,但找不到任何我需要的东西 我正在尝试用击倒JS构建一个单页应用程序,我对这方面还比较陌生,似乎无法解决这个问题 我有两个模板: <script id="template1" type="text/template"> <h3>Template 1</h3> <button id="templButton" text="Go to template 2" /> </scri

如果有人问过这个问题,请原谅。我在博客里搜索,搜索这个帖子,但找不到任何我需要的东西

我正在尝试用击倒JS构建一个单页应用程序,我对这方面还比较陌生,似乎无法解决这个问题

我有两个模板:

<script id="template1" type="text/template">
   <h3>Template 1</h3>
   <button id="templButton" text="Go to template 2" />
</script>
<div data-bind="template: { name: template1 }"></div>
<div data-bind="template: { name: template2 }"></div>
线程说,如果不使用“templateouse”,那么还有其他方法可以做到这一点吗?我对这一切都很陌生,所以如果我的方法看起来很愚蠢,请原谅

我看到过一些线程说点击事件应该由敲除来处理:

<button data-bind="click: function(e) { ... }" />

但这让我回到了我最初的问题,我如何加载第二个模板,并在单击按钮时绑定到它。

如果您的目标是使用单个div执行此操作,那么一种方法是:

<script id="template1" type="text/template">
   <h3>Template 1</h3>
   <button id="templButton" data-bind="click: swap">Go to template 2</button>
</script>

<script id="template2" type="text/template">
   <h3>Template 2</h3>
</script>

<div data-bind="template: theTemplate"></div>
因此,您将模板的名称存储在一个可观察对象中,并对其进行更新。样本:

如果您确实希望在两个div中显示,那么您需要有一个标志来说明哪一个是渲染的或可见的,如:

像这样装订:

<div data-bind="template: { name: 'template1', 'if': one }"></div>
<div data-bind="template: { name: 'template2', ifnot: one }"></div>

示例:

如果您的目标是用一个div来实现这一点,那么一种方法是:

<script id="template1" type="text/template">
   <h3>Template 1</h3>
   <button id="templButton" data-bind="click: swap">Go to template 2</button>
</script>

<script id="template2" type="text/template">
   <h3>Template 2</h3>
</script>

<div data-bind="template: theTemplate"></div>
因此,您将模板的名称存储在一个可观察对象中,并对其进行更新。样本:

如果您确实希望在两个div中显示,那么您需要有一个标志来说明哪一个是渲染的或可见的,如:

像这样装订:

<div data-bind="template: { name: 'template1', 'if': one }"></div>
<div data-bind="template: { name: 'template2', ifnot: one }"></div>

示例:

单击处理程序在哪里定义并绑定到按钮1。我更新了原始问题以回答您的问题,谢谢。单击处理程序在哪里定义并绑定到按钮1。我更新了原始问题以回答您的问题,谢谢。
<div data-bind="template: { name: 'template1', 'if': one }"></div>
<div data-bind="template: { name: 'template2', ifnot: one }"></div>
ko.applyBindings({
    one: ko.observable(true),
    swap: function() {
       this.one(false);
    }
});