如何在没有 erasing/overwriting 任何旧绑定的情况下让我的 Knockout.js 组件附加到页面?
How can I make my Knockout.js components append to the page without erasing/overwriting any old bindings?
Fiddle: 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个列表元素。
编辑: 也许我必须在这个新的 fiddle 中沿着路线走下去?也许像这样的东西可以让我在 <ul>
中实例化多个 ViewModel。 http://jsfiddle.net/mpqtsjhL/32/
老实说,你对 knockout 的使用并不符合预期。如果它真的是 ViewModel,那么创建一个 "host" MainViewModel 来管理其他 ViewModel
var MainMenuViewModel = function () {
this.viewModels = ko.observableArray();
this.viewModels.push(new ViewModel1());
this.load=function(){
this.viewModels.push(new ViewModel1());
};
}
查看更新 fiddle http://jsfiddle.net/r2hsvsdg/1/
顺便说一句,您还可以使用敲除处理点击逻辑
更好fiddle:http://jsfiddle.net/r2hsvsdg/4/
Fiddle: 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个列表元素。
编辑: 也许我必须在这个新的 fiddle 中沿着路线走下去?也许像这样的东西可以让我在 <ul>
中实例化多个 ViewModel。 http://jsfiddle.net/mpqtsjhL/32/
老实说,你对 knockout 的使用并不符合预期。如果它真的是 ViewModel,那么创建一个 "host" MainViewModel 来管理其他 ViewModel
var MainMenuViewModel = function () {
this.viewModels = ko.observableArray();
this.viewModels.push(new ViewModel1());
this.load=function(){
this.viewModels.push(new ViewModel1());
};
}
查看更新 fiddle http://jsfiddle.net/r2hsvsdg/1/
顺便说一句,您还可以使用敲除处理点击逻辑
更好fiddle:http://jsfiddle.net/r2hsvsdg/4/