gpt4 book ai didi

javascript - 带有 mapping.fromJS 和模板的 Knockoutjs

转载 作者:行者123 更新时间:2023-11-29 22:17:15 27 4
gpt4 key购买 nike

我已经更新了一个表,其中包含我模型中的每个条目,并且在删除和添加到数组时触发了两个事件。 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) 时,knockout 似乎正在删除/添加条目,即使它们完全正确相同。因此调用了 showElement/hideElement 并且我表中的元素“闪烁”,因为它们在每次 ajax 调用时被删除/添加。

应该是这样还是我用错了?

最佳答案

你需要在映射插件中使用key选项,这样插件才能知道哪些项是相同的

http://jsfiddle.net/yWwfz/

var mapping =  {
items: {
key: function(item) { return item.id; }
}
};
ko.mapping.fromJS(data, mapping, this);

关于javascript - 带有 mapping.fromJS 和模板的 Knockoutjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423952/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com