Javascript 使用html作为敲除组件的输入

Javascript 使用html作为敲除组件的输入,javascript,html,knockout.js,Javascript,Html,Knockout.js,我正在代码库中实现一些组件。但是,我在模板部分遇到了一个较小的问题。我想将模板作为输入发送到敲除组件,但我不确定如何做,或者是否可能 举一个例子,我希望我能做这样的事情: <like-or-dislike params="value: userRating"> <div class="like-or-dislike" data-bind="visible: !chosenValue()"> <button data-bind="click:

我正在代码库中实现一些组件。但是,我在模板部分遇到了一个较小的问题。我想将模板作为输入发送到敲除组件,但我不确定如何做,或者是否可能

举一个例子,我希望我能做这样的事情:

<like-or-dislike params="value: userRating">

    <div class="like-or-dislike" data-bind="visible: !chosenValue()">
        <button data-bind="click: like">Like it</button>
        <button data-bind="click: dislike">Dislike it</button>
     </div>

    <div class="result" data-bind="visible: chosenValue">
        You <strong data-bind="text: chosenValue"></strong> it.
        And this was loaded from an external file.
    </div>

</like-or-dislike>

喜欢吗
不喜欢
您可以它。
这是从外部文件加载的。
但我找不到任何文件,如果它在所有的工作。我之所以希望以这种方式实现它,原因很简单,因为我有一些服务器生成的html,我希望它仍然是组件的一部分。否则,我将不得不使其成为json对象,并在组件内部呈现html,这似乎是一个不必要的额外步骤。使用组件的好处是,逻辑在它自己的文件中是分开的,而且在不同的组件之间分开逻辑更容易。我明白,如果我这样做,如果我想重用组件,我必须复制html

我的想法是错误的还是可能的


谢谢你明智的建议和更好的智慧。

我不能说我完全理解你的处境,但我想我可能有答案。实际上,您可以让服务器生成
,并将其与组件一起使用(当然是通过id)。KO文档在组件模板方面非常差,但下面是一个使用元素的示例

我从组件中学到了一些东西。viewmodel必须在声明之前声明,而
必须在绑定之前位于dom中

函数组件ViewModel(){
var self=这个;
self.Title=ko.observable(“这是一个组件VM”);
}
函数ViewModel(){
var self=这个;
self.ExampleComponent=ko.observable({
名称:“示例”
});
}
ko.components.register('示例'{
模板:{
元素:“ComponentTemplate”
},
viewModel:ComponentViewModel
})
应用绑定(新的ViewModel())