通常我们需要从列表中显示项目,例如,您可以有几个项目,每个用户可以在其中一些项目上工作,分配项目时,我们添加projectfirst,然后使用projectId引用它们。处理列表项目(显示和编辑)的正确方法?
当我开始玩Breezejs和Knockout时,我发现当有50多个项目时使用下拉(选择)html元素是不实际的,并且在不允许用户使用下拉菜单的情况下是不正确的改变价值。所以我拿下面的代码从projectId中获取项目名称
itemName: function (items, item) {
var r = '';
if (item() == '') return r;
var match = ko.utils.arrayFirst(getLocal('projects', 'name', true), function (i) {
return i.id() === item();
});
if (match) r = match.name();
return r;
}
项目是本地预取和存储的项目列表。 但我发现性能仍然不能接受,javascript很忙,我觉得arrayFirst是不够高效的搜索?
现在我让服务器端返回projectId和projectName,并在需要时显示projectName,看起来更好,但除了数据冗余之外,在保存更改时还有另一个问题。
任何建议什么是正确的方法在这里做?
谢谢
arrayFirst是一个简单的循环遍历你的回调函数,它不会成为你的问题的原因,特别是只有50个项目。您是否使用浏览器的开发工具来分析您的JavaScript? –
70行370个选项,没有profiler,javascript很忙。 – wyx2000
它在哪里忙?遍历370个项目的数组仍然很快,但执行回调可能不会。 –