gpt4 book ai didi

polymer - polymer 元素使用 getter/setter 声明可绑定(bind)属性的最简单方法?

转载 作者:行者123 更新时间:2023-12-04 23:50:23 25 4
gpt4 key购买 nike

使用 polymer 元件的 attributes属性或 publish block ,很容易创建一个属性,其底层存储是自动管理的。但是,经常出现不简单地存储和检索属性值的情况。例如,属性的值可能取决于其他元素状态。另一个例子:可绑定(bind)但只读的属性。

在这种情况下,很高兴能够使用 getter/setter 对来定义属性。但是,不清楚如何将生成的属性声明为可绑定(bind)的。如果属性名称包含在 attributes 中或 publish , getter/setter 不会被使用。如果未声明属性名称,则它似乎不可绑定(bind)。以及 attributes 导致的默认属性行为/publish仅支持 onChanged 处理程序;没有办法拒绝设置属性的尝试(例如,在 setter 中),似乎也没有办法在检索值时运行 getter。

我认为这里的任何解决方案都需要搁置 Polymer 的声明性语法并从头开始构建。我试了一下:http://jsbin.com/qejaf/2/edit .这行得通,但我想知道是否有更简单的方法可以做到这一点。例如,是否可以定义一个 getter/setter(或只是 getter)并通过 publish 公开它?堵塞?

(除此之外:在该示例中有一点我希望能够引用命名元素构造函数,但它似乎在 ready 期间不可用。)

最佳答案

几点:

  • 到目前为止,您无法发布 setter/getter ,因为 Polymer 没有
    支持它的机器。我们可能会在 future 改进这一点,但它是
    看起来不太重要,因为您可以使用计算完成类似的工作
    属性和观察者。肯定有计划
    一个正式的计算属性语法,这应该使事情更清楚一些。
  • 一般来说,您不应该尝试观察 setter/getter ,因为(如 Jan
    注意)Object.observe无法知道值是否已更改
    (令人困惑的是,它经常在 observe.js polyfill 下工作,因为
    脏检查;即便如此,对 getter 进行脏检查是个坏主意
    因为 getter 可能是一个任意昂贵的计算
    [例如。可能使用 offsetWidth并强制重新计算样式])。
  • 不支持将可绑定(bind)属性设为只读。 Polymer 采用了一种不同寻常的方法,默认情况下将数据绑定(bind)设为双向。选择这种方法是为了减少开发人员的认知负担(数据不会传播,所有绑定(bind)的属性总是反射(reflect)相同的值)。另一面是观察副作用总是异步的。在下面的 jsbin 中,我做了 count只读的,但仅在某种意义上它与任何设置它的尝试异步返回到私有(private)值。

  • http://jsbin.com/qiboq/4/edit

    关于polymer - polymer 元素使用 getter/setter 声明可绑定(bind)属性的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900203/

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