0

小提琴:http: //jsfiddle.net/mpqtsjhL/27/

基本上我有一个使用模板的 Knockout.js 组件:

JavaScript:

ko.components.register('sublist', {
    synchronous: true,
    viewModel: function (params) {},
    template: {
        element: 'my-component-template'
    }
});

HTML

<ul data-bind="component:{name:'sublist',params:{vm:sidebarVm}}" class=""></ul>
<template id="my-component-template">
    <!-- ko foreach: sidebarVm.stepList.steps-->
      <li data-bind="html: message"></li>
    <!-- /ko -->
</template>

我有多个 ViewModel,用户可以通过单击某些按钮将其加载到该模板中。正如我现在所拥有的,当用户加载一个新的 ViewModel 时,它会覆盖旧的。

所需功能:当用户单击按钮加载新的 Viewmodel 时,这些新的列表元素<li>会被附加而不是替换现有的元素。如何??在Fiddle中,一个列表中应该总共有 6 个列表元素。

编辑:也许我必须沿着这个新小提琴的路线去某个地方?也许这样的事情可以让我在<ul>. http://jsfiddle.net/mpqtsjhL/32/

4

1 回答 1

3

Tbh,您对淘汰赛的使用并不像预期的那样。如果它真的是 ViewModel,则创建一个管理其他 ViewModel 的“主机”MainViewModel

  var MainMenuViewModel = function () {
    this.viewModels = ko.observableArray();
    this.viewModels.push(new ViewModel1());

    this.load=function(){
        this.viewModels.push(new ViewModel1());
    };
}

查看更新的小提琴http://jsfiddle.net/r2hsvsdg/1/

顺便说一句,您还可以使用敲除处理点击逻辑

更好的小提琴:http: //jsfiddle.net/r2hsvsdg/4/

于 2015-07-07T19:16:15.897 回答