Knockout.js 如何使用敲除数据表扩展更新编辑行的值?
Im使用knockout扩展插件在datatables中加载1000多行。Im使用map.fromjs将这些项映射到一个可观察的数组中,这确实会降低页面的初始加载速度 为了避免这种缓慢的初始加载,我尝试将可观察数组设置为只填充普通的json对象,这意味着数组中包含的1000多个对象是不可观察的 但是由于对象是不可见的,所以当在普通对象上执行版本时,在datatables网格中看不到更改,因为没有绑定。有没有办法让ui改变以适应普通编辑的json对象的新值Knockout.js 如何使用敲除数据表扩展更新编辑行的值?,knockout.js,Knockout.js,Im使用knockout扩展插件在datatables中加载1000多行。Im使用map.fromjs将这些项映射到一个可观察的数组中,这确实会降低页面的初始加载速度 为了避免这种缓慢的初始加载,我尝试将可观察数组设置为只填充普通的json对象,这意味着数组中包含的1000多个对象是不可观察的 但是由于对象是不可见的,所以当在普通对象上执行版本时,在datatables网格中看不到更改,因为没有绑定。有没有办法让ui改变以适应普通编辑的json对象的新值 我甚至尝试从可观察数组中删除已编辑的对象
我甚至尝试从可观察数组中删除已编辑的对象并读取它,但没有成功。您应该将每个项目的每个可编辑属性设置为可观察。例如:
self.items = ko.observableArray(ko.utils.arrayMap(
datasource,
function(row){
return {
id: row.id,
title: ko.observable(row.title)
};
}
));
不要在意成千上万的物品;这个数额不是很大
看看它是如何处理2500个对象的:2500个对象不是很多。。。我。。。然而,我有一个项目,它试图用90000多行来做这件事,它实际上杀死了chrome。。。解决方案是服务器端分页。。。我创建了敲除绑定分页,该分页将要求每页有少量行。这些参数是在我的存储过程中处理的。您还可以用服务器端语言处理分页参数。这需要对服务器进行更多的访问,但这是值得的 这里有一些SQL代码
declare @rowCount int = 25;
Select MainSearchWithRowNumbers.*
FROM
(SELECT
ROW_NUMBER() OVER () As RowNumber
,Count(*) OVER () as TotalRows
,CEILING(CAST(Count(*) OVER () as FLOAT) / CAST(@rowCount as FLOAT)) AS TotalPages
,*
FROM
(
SELECT
-- ROW_NUMBER() OVER (ORDER BY CarcassRemovalId) AS AbsRowNumber
Count(*) OVER () AS AbsTotalRows
,CEILING(CAST(Count(*) OVER () AS FLOAT) / CAST(@rowCount AS FLOAT)) AS AbsTotalPages
,*
FROM YOURTABLE)
) as MainSearch
) as MainSearchWithRowNumbers
WHERE
(@page is null)
or (
(RowNumber <= @page * @rowCount)
and (RowNumber > (@page - 1) * @rowCount)
)
你知道另一种更快的map.fromjs方法吗?这会降低页面的初始加载速度,这就是为什么我想使用普通的js对象而不是可观察对象。