Javascript 如何调用Polymer 1.0中元素的自定义方法?
我正在编写一个新版本的ChromeExision,但遇到了一个问题 这是我的元素代码: 在第32行,我试图调用自定义方法Javascript 如何调用Polymer 1.0中元素的自定义方法?,javascript,polymer,frontend,Javascript,Polymer,Frontend,我正在编写一个新版本的ChromeExision,但遇到了一个问题 这是我的元素代码: 在第32行,我试图调用自定义方法willUpdateBackground,控制台告诉我该方法是未定义的。代码如下 Polymer({ is: 'pure-newtab', ready: function() { console.dir(this.$.background); this.$.background.willUpdateBackground('color', '#333');
willUpdateBackground
,控制台告诉我该方法是未定义的。代码如下
Polymer({
is: 'pure-newtab',
ready: function() {
console.dir(this.$.background);
this.$.background.willUpdateBackground('color', '#333');
// This line get error, 'willUpdateBackground' is undefined
}
});
定义
Polymer({
is: 'pure-background',
ready: function () {
},
willUpdateBackground: function(type, imageOrColor) {
console.log(type);
console.dir(this);
}
});
但是如果我存储这个对象,在控制台中我可以调用temp1.willUpdateBackground
,它就被激活了。
截图:
已修复,问题再次出现
我将自定义方法调用移动到attached
callback,在某些环境中,ready
函数中的元素未就绪。
在我修复它之后,它再次发生:在attached
方法中,调用再次失败,我将其移动到异步调用,延迟100ms,问题再次消失。这不是固溶体,我还在寻找出路
this.async(function () {
this.$['background'].updateBackground('rgba(255,128,0,1)', 'url(https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png)');
}, 100);
我试着把你的代码粘贴到这个jsbin中,效果很好。。。(我对您的console.dir()进行了注释,并添加了几个我自己的console.log(),但我只做了这些)
我建议您检查您的聚合物版本是否已更新,这应该会有所帮助。发布jsbin以帮助您。您是否尝试过使用“异步函数”或“附加”生命周期方法?@FlavioOchoa,这只是在chrome newtab扩展环境下发生的。所以jsbin不能复制它。@FlavioOchoa你说得对,它可以在附加的回调中调用,谢谢@弗拉维奥乔亚哦,问题又出现了。。。在attached
方法中,我再次收到未定义的调用。我添加了100毫秒延迟和async
,然后元素就准备好了。这不是一个固定的解决方案,还有其他方法吗?这么说,chrome newtab(Command+T created)环境中没有willUpdateBackground
,只是想知道在扩展环境下是否有不同的原型规则?