3.3 -在每个绑定中重新呈现组件
knockout.js 3.3 - rerendering component in foreach binding
我的viewModel由可观察数组和可观察元素组成。
// viewmodel
var viewModel = function () {
this.o = ko.observableArray();
for (var i = 0; i < 3; i++)
this.o.push(ko.observable(0));
};
我需要改变这些元素的值。为此,我创建了这个组件。下面是一个简单的例子:
//custom element <component>
ko.components.register("component", {
viewModel: function (params) {
var self = this;
this.value = params.value;
console.log("init component");
this.i = 1;
this.change = function () {
self.value(self.i++);
console.log("change to " + self.value());
}
},
template: "<span data-bind='text: value'></span> <button data-bind='click:change'>Change</button>"
});
该组件可以修改params.value.
中可观察元素的值。我的观点很简单:
<!--ko foreach:o-->
<component params="value: $rawData"></component>
<!--/ko-->
完整示例:http://jsfiddle.net/tselofan/xg16u5cg/7/问题是,当可观察数组中可观察元素的值被改变时,组件会被再次渲染,因为它位于每个绑定的内部。您可以在日志中看到这一点。在这种情况下,我可以使用什么最佳实践?谢谢你
由于组件的上下文是该数字,因此每次数字更改时都会重新创建该组件。
http://jsfiddle.net/Crimson/xg16u5cg/8/<!-- ko foreach: o -->
<component params="value: $data.myNumber"></component>
<!-- /ko -->
//Test how components work in foreach binding
//custom element <component>
ko.components.register("component", {
viewModel: function (params) {
var self = this;
this.value = params.value;
console.log("init component");
this.i = 1;
this.change = function () {
self.value(self.i++);
console.log("change to " + self.value());
}
},
template: "<span data-bind='text: value'></span> <button data-bind='click:change'>Change</button>"
});
// viewmodel
var viewModel = function () {
this.o = ko.observableArray();
for (var i = 0; i < 3; i++)
this.o.push({myNumber: ko.observable(0)});
};
ko.applyBindings(new viewModel());
Knockout-Repeat (https://github.com/mbest/knockout-repeat)是一个迭代绑定,它不创建新的绑定上下文,并且具有foreach
模式,因此它应该像您期望的那样与组件一起工作。
相关文章:
- 追加新web组件时出现线程问题
- 在 React JSX 中有条件地呈现组件部分
- Vuejs 在尝试遍历数组数据或 v-for 时无法正确呈现组件
- 未呈现组件上的 ExtJS 手风琴事件
- 使用webpack中的代码拆分在服务器端呈现组件
- React路由器未呈现组件
- React.JS,如何从中呈现组件'的孩子
- 在Ajax请求后动态附加的HTML中呈现组件
- 在递归聚合物组件中插入新子组件时,无法读取未定义的属性“concat”
- 新Ember组件中输入助手的最佳实践
- Reactjs在不同的html页面上呈现组件
- ReactJS -内联样式不会在重新呈现组件时更新
- 不需要呈现组件时的最佳实践
- 使用React,我如何基于类型呈现组件
- 根据屏幕大小以不同的顺序呈现组件(React)
- reactJs组件的实例来呈现组件
- 3.3 -在每个绑定中重新呈现组件
- 新页面组件上的离子无线电组
- Reactjs在其他组件之前呈现组件
- 如何在Vue.js中现有的基础上创建新的组件数据