Polymer 为什么聚合物';的计算属性是否需要显式属性参数?
我对Polymer 1.0元素进行了深入研究,我对计算出来的属性有点好奇 例如,在paper drawer panel.html中Polymer 为什么聚合物';的计算属性是否需要显式属性参数?,polymer,polymer-1.0,Polymer,Polymer 1.0,我对Polymer 1.0元素进行了深入研究,我对计算出来的属性有点好奇 例如,在paper drawer panel.html中 <dom-module id="paper-drawer-panel" …> … <div id="main" style$="[[_computeDrawerStyle(drawerWidth)]]"> … </div> … </dom-module> <script> Polym
<dom-module id="paper-drawer-panel" …>
…
<div id="main" style$="[[_computeDrawerStyle(drawerWidth)]]">
…
</div>
…
</dom-module>
<script>
Polymer({
is: 'paper-drawer-panel',
…
_computeDrawerStyle: function(drawerWidth) {
return 'width:' + drawerWidth + ';';
},
…
</script>
这种做法不好吗?计算绑定中的显式参数有一个重要用途:告诉聚合物计算绑定依赖于哪些属性。这允许Polymer知道何时重新计算和更新计算的绑定 以
[[[u computeDrawerStyle()]]
为例。在这种情况下,Polymer不知道计算的绑定所依赖的其他属性,只会在加载时计算一次
一旦您显式地添加
drawerWidth
([[[u computeDrawerStyle(drawerWidth)]]
),Polymer现在就知道它应该在每次drawerWidth
更改时为新值再次运行计算绑定。我想您会感到困惑。您在这里的代码示例中所指的style$=“[[[u computeDrawerStyle(抽屉宽度)]”
是对名为_computeDrawerStyle的私有函数的调用,当然您需要显式地为其提供正确的参数。查看文档以了解计算属性。聚合物有两个不同的概念,您会混淆它们
\u computeDrawStyle
)是什么。这使得聚合物在其任何参数发生变化时调用(元素的)该函数。这些参数都是属性(或者可以使用对象的子属性和数组的索引),这就是这里发生的情况啊好的,我明白了。我只是尝试从AngularJs应用程序开发转向聚合它。AngularJs使用一个摘要循环,这意味着如果范围中有更新,则每个计算表达式都会再次求值,因此视图会得到更新。。即使表达式的各个部分没有变化。我想聚合方式在性能方面更智能、更好。computeDrawerStyle不是计算属性,它是一个私有函数调用。
[[_computeDrawerStyle()]]
…
_computeDrawerStyle: function () {
return 'width:' + this.drawerWidth + ';';
}