- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我创建了一个用于显示和编辑人员列表的简单原型(prototype)。原型(prototype)可以在这里找到:JSBin .
如您所见,当按下“保存”时,项目将使用 array mutation API 写回到数组中。 .我不确定这是否真的需要,因为对象总是通过引用分配。
但是,“保存”按钮不会更新列表中的项目。 但是当您再次编辑它时,新更改的值会以某种方式保留在表单中。我猜变化确实发生在内存中,但 dom-repeat
不会触发列表的新呈现。
我还在 dom-repeat
上设置了 observe
属性,但似乎没有任何区别。
我的问题是双重的:
最佳答案
简答:将您的保存功能切换为此
app.save = function(e) {
app.splice('people', app.selectedIndex, 1, {name: app.selected.name, surname: app.selected.surname});
app.selectedIndex = -1;
};
长答案:
您需要这样做的原因有点复杂,但它与 dom-repeat 内部的性能优化有关。当 dom-repeat 的数组更新时,它不会简单地删除其所有子节点并重新呈现所有内容,因为这可能会很昂贵。相反,它循环遍历它当前作为子项拥有的所有模板实例,并检查它们的项模型是否已更改。对于每个模板,它都会进行引用相等性检查以查看它们是否是同一对象。如果它们相同,则什么都不做。如果不是,它会重新呈现该模板。
在您的例子中,您将数组与已经存在的相同对象拼接在一起。所以当 dom-repeat 做这个优化检查时,它看到这个项目是和以前一样的对象,什么都不做。但是,如果您创建一个新对象,此检查将失败并且它将重新呈现模板实例......因此,它可以工作。
现在,为什么它不在对象发生变异时更新?答案必须归因于 Polymer 的数据检查是基于“路径通知”,而不是像脏检查这样昂贵的东西。更新属性时,Polymer 会向数据绑定(bind)到该属性的每个子节点触发一个事件。问题是,您的表单没有作为“people”数组中的元素数据绑定(bind)到属性。他们被绑定(bind)到一个不同的属性,'selected'。即使它们由同一个对象支持,属性名称也不同,因此通知路径不匹配; app.selected.name
是当您更改 John Doe 的名字时收到通知的路径,而不是 app.people.0.name
,它是 dom-repeat 的路径正在寻找更改通知。
至于问题的第二部分,我建议您尽可能避免双向数据绑定(bind)。它不像 Angular 那样依赖脏检查,因此它不是一个大的性能问题,但它仍然有很多开销。
关于javascript - 聚合物 1.0 : Best practice for managing a simple list of items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36449788/
上下文 我有一个日间 TUMBLINGWINDOW(类似于下面所示的) SELECT DATEADD(day, -1, System.Timestamp()) AS WindowStart
因此,我正在开发一个非常小的 Web 组件,以作为更大的设计系统的一部分。 我对网络组件的使用有点陌生,但我知道这个特定的网络组件可以在一个布局中使用很多很多次。 此 Web 组件控制在传递给它的任何
我刚刚开发了一个 Android 应用程序(minSdkVersion 23/targetSdkVersion 29),可以连接到 BluetoothLE 设备以定期获取数据。 现在,在 MainAc
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我一直在阅读有关 Airplay SDK 和 Dragonfire SDK 的内容。这些是在没有 Mac 的情况下进行 iphone 开发的合法选择吗?大家有更好的解决办法吗? 最佳答案 由于签名等原
我正在考虑使用 DTO 而不是传递我的域对象。我在这里和其他地方都读过几篇文章,我知道有几种方法可以完成这项工作。 如果我总共只有大约 10 个域类,并且考虑到我想在我的 View (WPF 前端)中
我的问题是,如果我有一个列表 list = [1,2,3,4,5,6,7] 如果我想知道这个列表中元素的数量,是len(list) 或 list.count 更好的选择?还是 .count 仅适用于来
我想知道 Django Rest Framework 的最佳实践。我一直通过每个用户使用不同的序列化程序(员工、帐户所有者、其他人)和 HTTP 方法来限制更改帐户上某些属性的访问权限,但我觉得这太不
我有数百个用于测试组件的脚本。这些脚本中的每一个都包含一组下标和单独的记录。 下标可以在多个 TC_Level 脚本中使用,甚至可以在其他下标中使用。 每个脚本都有一个唯一的名称。 例子: TC_1
我正在建立一个以两种语言提供产品信息的网站:英文和中文。 每个产品必须有英文名称,也可以有中文名称。 每次请求产品页面时,request检查对象以确定产品名称应该以英文还是中文显示。在后一种情况下,如
场景:应用程序具有可以启用某些优化的算法。默认情况下,有些是打开的,有些是关闭的。在 Java 中是否有一种方便的方法来实现某种全局属性系统? 要求: 必须很容易两次使用不同的设置运行程序的多个实例
我从事嵌入式工作,我有一些管理硬件的软件模块。这个模块有状态,状态转换很复杂:根据事件,模块可以从状态 A 到状态 B 或者可能到 C .但是,当它退出某个状态时,它应该对硬件执行一些操作,以使其也保
我有一个免费网站,可以流式传输实时股票期权数据。我想让用户制作并保存他们自己的 JavaScript 可调用工具来解释选项数据。用户可以调用这些自定义工具来帮助他们自己做出有关期权的买卖决定。 但对于
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 2 年前。 社区在 6 个
我不是 DBA,我不知道什么是最好的解决方案。我有两个表, Custumers Table CustomerId (primary key, identity) ... 和 Suppliers Tab
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
我一直在阅读关于版本控制主题的所有问题,但我认为我没有找到一个看起来像我自己的场景。 场景是: 我们有一个中型/大型 Web 应用程序,它有(至少应该有)一个部署到所有客户端的核心。当我们向客户演示应
我希望根据继承来组织一些项目,目的是确定哪些项目是连接最密集的父项,并且还只是看到形成的连接。 通常这将通过拓扑排序来完成,但我的图有循环。是否有类似“尽力而为”拓扑排序的东西,它可以尝试根据连接数或
以下在 JQuery 中附加事件处理程序的方法有什么区别? (function () { var $body = $("body"); $('button').click(functi
我是一名优秀的程序员,十分优秀!