【问题标题】:Force dom-repeat to update computed bindings in render: form resets强制 dom-repeat 更新渲染中的计算绑定:表单重置
【发布时间】:2016-03-15 08:46:17
【问题描述】:

我正在尝试找到一种方法,在对话框关闭/放弃后将对话框内的表单重置为某些默认数据。

假设collaborators 是来自服务器的列表,每个列表都有一个相关的权限级别。我的表单提供了一种编辑他们的权限的方法。如果他们放弃对话框(不点击提交),无论他们在下拉菜单中选择什么,它都应该恢复为他们保存的权限。

当他们放弃对话时,我尝试执行 this.$.users.render() 以强制 dom-repeat 重新计算 _computeDropdown(它返回一个纸张项目索引)并摆脱用户选择,即使 items没有改变。

render 不调用计算绑定。我是否忽略了另一种将选择重置为默认数据的方法?

<template id="users" is="dom-repeat" items="[[ collaborators ]]">

    <div class="field">
        <paper-input disabled name="collaborator" label="[[ item.name ]]"></paper-input>
        <paper-icon-button icon="close" on-tap="remove"></paper-icon-button>
        <paper-dropdown-menu name="privilege">
            <paper-listbox class="dropdown-content" selected="[[ _computeDropdown(item.privilege) ]]">
                <paper-item>Owner</paper-item>
                <paper-item>Collaborator</paper-item>
            </paper-listbox>
        </paper-dropdown-menu>
    </div>

</template>

【问题讨论】:

  • 目前,我正在使用这种方法来破解它。将依赖项添加到计算的绑定_computeDropdown(item.ownership, _updateHack),然后在我希望它重新评估时更改_updateHack...stackoverflow.com/questions/27206003/…

标签: polymer polymer-1.0 paper-elements polymer-elements


【解决方案1】:

dom-repeat 有一个observe 属性。

<template id="users" is="dom-repeat" items="[[ collaborators ]]"
    observe="_updateHack">

应该这样做。

【讨论】:

  • 哦,有趣,是的。尽管如此,仍然需要一个 _updateHack 道具来改变。我想这只是 Polymer 试图真正节省不必要的更新;我必须承认,这是我真正遇到这种需求的唯一情况,仅观察现有道具是不够的。
猜你喜欢
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
相关资源
最近更新 更多