Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何调用Polymer 1.0中元素的自定义方法?_Javascript_Polymer_Frontend - Fatal编程技术网

Javascript 如何调用Polymer 1.0中元素的自定义方法?

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');

我正在编写一个新版本的ChromeExision,但遇到了一个问题

这是我的元素代码:

在第32行,我试图调用自定义方法
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
,只是想知道在扩展环境下是否有不同的原型规则?