我很好奇的部分是使用
的原因value: function() { return {}; }
而不是
value: {}
以下是示例代码:
<script>
Polymer({
is: 'polymer-demo',
properties: {
data: {
type: Object,
notify: true,
value: function() { return {}; }
}
},
});
</script>
答案 0 :(得分:5)
将属性初始化为对象或数组值时,请使用函数确保每个元素都获得自己的值副本,而不是在元素的所有实例之间共享对象或数组。
虽然您可以使用{}
,但这将是每个元素共享的相同对象,因此如果某个元素的值发生变异,则所有其他元素都会看到应用了相同的更改。这不是你想要发生的事情。通过使用函数,将为每个元素调用该函数,并且每个调用将生成一个新的单独对象。然后,突变将仅适用于该单个元素而不会影响其他元素。
答案 1 :(得分:2)
我觉得vuejs
要求将data
组件呈现为函数而不是它所对象的原因相同:
在基本示例中,我们将数据直接声明为普通对象。 这是因为我们只使用新的Vue()创建了一个实例。 但是,在定义组件时,必须将数据声明为a 返回初始数据对象的函数。 为什么?因为会有 使用相同的定义创建的许多实例。如果我们仍然使用 数据的普通对象,相同的对象将通过引用共享 跨所有实例创建!每次都提供数据功能 创建一个新实例,我们可以简单地调用它来返回一个新的实例 初始数据的副本。
因此,确保给予组件的数据始终表示新的“负载”
希望这有帮助!
答案 2 :(得分:0)
通常这是在您想要显示的情况下完成的,您不仅可以返回固定值,还可以计算动态值并返回此值,但是您懒得返回超过{}的内容。有时候你在框架中声明在某个地方使用的东西,并且预期会有一个函数返回一个对象,而不仅仅是一个固定的值或对象。
您可以通过更改代码,执行代码以及查看错误或不同行为来找到答案。