如何在不擦除/覆盖任何旧绑定的情况下将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。
所需功能:当用户单击按钮加载新的Viewmodel时,这些新的列表元素<li>
将被附加,而不是替换现有的列表元素。怎样在Fiddle中,一个列表中总共应该有6个列表元素。
编辑:也许我必须去这个新的小提琴中的某个地方?也许这样的东西可以让我在<ul>
中实例化多个ViewModel。http://jsfiddle.net/mpqtsjhL/32/
Tbh,您对淘汰的使用并不像预期的那样。如果它真的是ViewModels,那么制作一个"主机"MainViewModel来管理其他ViewModels
var MainMenuViewModel = function () {
this.viewModels = ko.observableArray();
this.viewModels.push(new ViewModel1());
this.load=function(){
this.viewModels.push(new ViewModel1());
};
}
查看更新的fiddlehttp://jsfiddle.net/r2hsvsdg/1/
顺便说一句,你也可以使用敲除来处理点击逻辑
更好的小提琴:http://jsfiddle.net/r2hsvsdg/4/
相关文章:
- 如何创建带有插槽的vue js组件预加载程序
- 如何在react js中将值从一个组件发送到另一个组件
- 如何在react js中移动第二个组件
- React js更改状态不会更新组件
- ember-js组件初始化不同的函数
- 复选框保持React JS中各组件的状态
- 如何在cycle js中从JSON数组创建组件
- Vue.js获取组件中的一个元素
- Ember.js(v2.4.5)组件不是't错过第二个动作
- 将自定义脚本加载到Vue.js组件中
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- 使用react.js渲染其他组件内部的组件
- React.js不区分同一类的两个组件
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 如何忽略node.js中其他文件或组件所需的文件
- React.js简单组件组成问题
- 在多个react.js组件中呈现json数据
- 以最封装的方式封装/封装ScalaJS react js组件(react stick)
- 需要来自单个JS文件的多个子模块与节点/组件.js
- 在组件.js内加载客户 sapui5 库