用mapping.fromJS和template击倒js
Knockoutjs with mapping.fromJS and template
我已经用模型中的每个条目更新了一个表,并且在删除和添加数组时触发了两个事件。hideElement调用jquery的"fadeOut",而showElement调用jquery的"fadeIn"函数来创建一个漂亮的渐出/渐入效果。
<tbody data-bind='template: { foreach: entries,
beforeRemove: hideElement,
afterAdd: showElement }'>
我的模型是这样的:
var Model = function() {
self.entries = ko.mapping.fromJS([]);
this.getData = function() {
$.ajax({
url: "/test",
type: "GET",
success: function(response) {
ko.mapping.fromJS(response, self.entries);
...
this.showElement = function(elem) {
if(elem.nodeName == "TR") {
$(elem).fadeIn(500);
}
};
this.hideElement = function(elem) {
if(elem.nodeName == "TR") {
$(elem).fadeOut(500);
};
};
...
问题是,每次在ajax响应中调用ko.mapping.fromJS(response, self.entries)
时,即使它们完全相同,似乎也会删除/添加条目。因为,showElement/hideElement被调用,元素在我的表是"闪烁",因为他们被删除/添加每次ajax调用。
它应该是这样的还是我用错了?
您需要在映射插件中使用key选项,以便插件知道哪些项是相同的
http://jsfiddle.net/yWwfz/var mapping = {
items: {
key: function(item) { return item.id; }
}
};
ko.mapping.fromJS(data, mapping, this);
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 要求未定义JS回调参数
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 如何从Java/scala调用js美化程序
- 击倒.js的速度很慢
- 击倒没有定义?确实需要js加载任何内容
- 与一个击倒的错误作斗争.js我
- 在nodejs中使用.fn扩展名在自定义模块中击倒js
- 击倒js的多个绑定
- 用mapping.fromJS和template击倒js