如何在另一个组件中有条件地添加组件

g_b

我正在测试Knockout的组件功能,到目前为止,它已经能够成功地在几种情况下使用它。现在,我遇到了无法找到有关如何执行操作的资源的情况。我想基于某个关键字在另一个组件内添加一个组件。这是一些片段:

父组件的模板

<div id="container">
</div>

父组件的视图模型

define(["jquery", "knockout", "ko-postbox", "text!./parent.html"], function($, ko, kopost, template) {

    function displayChildContent(value) {
        switch (value.toLowerCase()) {
            case "child":
                //
                // How to load child component?
                //
                break;
            default:
                break;
        }
    }

    function ParentViewModel() {
        ko.postbox.subscribe("child-click", function(newValue) {
            displayChildContent(newValue);
        }, this);
    }

    return { viewModel: ParentViewModel, template: template };
});

子组件的模板

<div>
    <h1>Child</h1>
</div>

子组件的视图模型

define(["text!./child.html"], function(template) {

    function ChildViewModel() {
    }

    return { viewModel: ChildViewModel, template: template };
});

单击已触发,但我不知道如何在父模板中添加子模板。另外,我计划使用自定义元素的参数绑定将一些数据从父级传递到子级。将子模板添加到父模板后,它仍然可以这样做吗?

泰布利兹

在您的父组件中添加类似于以下内容的行:

<!-- ko if: childTmpl --><!-- ko component: {name: 'child'} --><!-- /ko --><!-- /ko -->

这里childTmpl是一个布尔值,观察到的订阅使用child-click现在,如果您不想在父级内部紧密耦合名为“ child”的组件,则可能会出现一个小问题。在那种情况下,您仍然可以将其替换为父viewModel中的(n observable)属性,甚至可以动态替换。它将变成:

<!-- ko if: childTmpl --><!-- ko component: {name: childComp} --><!-- /ko --><!-- /ko -->

在哪里可以填写参数/固定值/可观察值childComp的属性ParentViewModel这是我测试过的样本模型:

function ParentViewModel(params) {
  this.childComp = params && params.child || 'child';
  this.childTmpl = ko.observable(true).subscribeTo("child-click");
}

function ChildViewModel(params) {
  this.buttonClicked = ko.observable(true).publishOn("child-click");
}
ChildViewModel.prototype.toggle = function() { 
  this.buttonClicked(!this.buttonClicked()); 
};

在测试情况下,点击子组件的按钮(其最初示出)触发buttonClickedfalse,然后更新childTmplfalse为好,除去子组件。在这里查看完整的小提琴:

http://jsfiddle.net/ohdodfzr/2/

至于第二个问题:

另外,我计划使用自定义元素的参数绑定将一些数据从父级传递到子级。

是的,您仍然可以这样做。您甚至可以通过父模板中的组件绑定传递整个父viewModel,例如:

<!-- ko component: {name: 'child', params: {parent: $data}} -->

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在“组件”页面中有条件地设置第一个InstType

来自分类Dev

如何在JSP页面中有条件地显示div而不是另一个div的内容?

来自分类Dev

如何在SQL中有条件地用另一个日期替换日期?

来自分类Dev

如何在JSP页面中有条件地显示div而不是另一个div的内容?

来自分类Dev

如何在Azure Devops中有条件地从另一个管道运行一个管道?

来自分类Dev

如何在React中有条件地将子组件添加到父组件?

来自分类Dev

如何在有条件的组件上有条件地添加道具?

来自分类Dev

如何在useEffect中更新状态的条件组件中有条件地渲染?

来自分类Dev

如何在另一个列上有条件地按组执行列的连续计数

来自分类Dev

如何在React中有条件地将布局应用于组件

来自分类Dev

如何在redux-form的<Field>中有条件地渲染组件

来自分类Dev

如何在无状态组件中有条件地更新状态?

来自分类Dev

React – 如何在另一个已安装的组件中渲染附加组件?

来自分类Dev

如何有条件地向组件添加文本?

来自分类Dev

我如何有条件地将一个GUI连接到另一个GUI?

来自分类Dev

有条件地将数组作为变量添加到另一个数组中

来自分类Dev

Vue JS-有条件地在一个组件中显示信息

来自分类Dev

在 React 组件中有条件地渲染 <td>

来自分类Dev

有条件地将向量乘以另一个r

来自分类Dev

根据另一个键的值有条件地打印值

来自分类Dev

有条件地填充另一个熊猫df的数据?

来自分类Dev

有条件地在另一个诺言中调用诺言

来自分类Dev

从另一个数据帧有条件地更新熊猫

来自分类Dev

AngularJS模板:如何有条件地将标签包装在另一个标签中

来自分类Dev

如何基于另一个JSON属性有条件地反序列化JSON对象?

来自分类Dev

如何根据另一个变量的值有条件地更改变量的值?

来自分类Dev

AngularJS模板:如何有条件地将标签包装在另一个标签中

来自分类Dev

如何在自定义对话框中有条件地显示某些组件?

来自分类Dev

VBA /宏添加带有条件的另一个列

Related 相关文章

  1. 1

    如何在“组件”页面中有条件地设置第一个InstType

  2. 2

    如何在JSP页面中有条件地显示div而不是另一个div的内容?

  3. 3

    如何在SQL中有条件地用另一个日期替换日期?

  4. 4

    如何在JSP页面中有条件地显示div而不是另一个div的内容?

  5. 5

    如何在Azure Devops中有条件地从另一个管道运行一个管道?

  6. 6

    如何在React中有条件地将子组件添加到父组件?

  7. 7

    如何在有条件的组件上有条件地添加道具?

  8. 8

    如何在useEffect中更新状态的条件组件中有条件地渲染?

  9. 9

    如何在另一个列上有条件地按组执行列的连续计数

  10. 10

    如何在React中有条件地将布局应用于组件

  11. 11

    如何在redux-form的<Field>中有条件地渲染组件

  12. 12

    如何在无状态组件中有条件地更新状态?

  13. 13

    React – 如何在另一个已安装的组件中渲染附加组件?

  14. 14

    如何有条件地向组件添加文本?

  15. 15

    我如何有条件地将一个GUI连接到另一个GUI?

  16. 16

    有条件地将数组作为变量添加到另一个数组中

  17. 17

    Vue JS-有条件地在一个组件中显示信息

  18. 18

    在 React 组件中有条件地渲染 <td>

  19. 19

    有条件地将向量乘以另一个r

  20. 20

    根据另一个键的值有条件地打印值

  21. 21

    有条件地填充另一个熊猫df的数据?

  22. 22

    有条件地在另一个诺言中调用诺言

  23. 23

    从另一个数据帧有条件地更新熊猫

  24. 24

    AngularJS模板:如何有条件地将标签包装在另一个标签中

  25. 25

    如何基于另一个JSON属性有条件地反序列化JSON对象?

  26. 26

    如何根据另一个变量的值有条件地更改变量的值?

  27. 27

    AngularJS模板:如何有条件地将标签包装在另一个标签中

  28. 28

    如何在自定义对话框中有条件地显示某些组件?

  29. 29

    VBA /宏添加带有条件的另一个列

热门标签

归档