Javascript 如何生成观察块
我希望生成观察块,如下所示:Javascript 如何生成观察块,javascript,polymer,Javascript,Polymer,我希望生成观察块,如下所示: created: function () { var viewData = { type: 'Pikachu', name: 'Gary' }; // iterate over view data for (prop in viewData) { //set
created: function () {
var viewData = {
type: 'Pikachu',
name: 'Gary'
};
// iterate over view data
for (prop in viewData) {
//set the property
this[prop] = viewData[prop];
var handlerName = 'update' + prop
// set add the property to the observe block
this.observe[prop] = handlerName;
// set the handler
this[handlerName] = function (valueWas, valueIs) {
console.log('you have changed ' + prop + ' to ' valueIs);
};
}
},
这可能吗
这对我来说完全没有反应,没有错误,但是没有调用处理程序。您缺少一些奥秘。在完成原型之前,
聚合物元素
代码将观察
映射分解为并行阵列,作为(非常烦人的)速度优化
您可以通过调用以下命令重新优化实例:
this.element.optimizePropertyMaps(this)代码>
其中this.element
指定义当前元素类型的聚合物元素(fwiw,已知element
是该属性的坏名称)
以下是一个例子:
同样在性能方面,Polymer将观察员和其他特殊列表视为共享原型的特征。因为您的动态数据可能是每个实例的,所以我必须使您的示例更加复杂,以便进行适当的测试
注意,由于破坏聚合物的每一原型预期,可能还有其他复杂情况。我也无法获得动态属性更改处理程序:我怀疑发生的是聚合物的内部需要观察块和更改的处理程序信息,以便从中创建映射属性设置为处理程序。但在理论上,我觉得这应该行得通。你介意提交一个bug()吗?谢谢你的关注。我认为聚合物需要预先安装观察块。我已经提交了这个问题()。哦,是的,我们应该停止称它为observe block
,因为它会惹恼JavaScript语言律师。它实际上是一个对象
。块
是一种代码构造(它也使用{}
,fwiw)。这整件事可能都是我的错,因为我一开始就把它叫做块。)