KnockoutJs组件-添加默认类

KnockoutJs Components - add default class

本文关键字:默认 添加 组件 KnockoutJs      更新时间:2023-09-26

Knockout为您提供了两种实例化组件的方法,要么使用自定义html元素,要么使用组件绑定。

然而,在尝试对根组件元素进行样式化时,我发现了一个小问题。如果你只使用自定义元素语法,也没关系,因为你可以为其分配css样式——然而,如果你使用组件绑定,css规则不匹配,所以它们失败了。

理想情况下,我希望支持这两种场景,因为它们都有各自的用途。如果我能把一个类添加到根组件元素中,这只是组件名称,这将解决问题,但阅读文档后,还不清楚在哪里最好这样做。

我已经有了一个自定义模板加载器,它从ajax调用中检索模板,但这个模板只是根节点的内部html。

基本上我想要这个:

<my-custom-element>
...
...
<my-custom-element>

成为这个:

<my-custom-element class="my-custom-element">
...
...
<my-custom-element>

有人有什么想法吗?

您可以使用"createViewModel"方法和访问组件中的元素(例如添加一些类):

ko.components.register('some-component', {
    viewModel: {
        createViewModel: function(params, componentInfo) {
            var $element = $(componentInfo.element.children[0]);
            // some other code ...
        }
    },
    template: "<div></div>"
});