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

时间:2015-09-21 15:49:24

标签: javascript polymer frontend

我正在编写一个新版本的chrome extision,但遇到了麻烦。

这是我的元素代码:Element code

在第32行,我要调用自定义方法willUpdateBackground,控制台告诉我方法是undefined。代码如下。

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,这就是它的问题。 屏幕截图:http://i.stack.imgur.com/OTLgw.png

修复和问题再次发生 我将自定义方法调用移动到attached回调,在某些环境中,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);

1 个答案:

答案 0 :(得分:1)

我尝试将你的代码粘贴到这个jsbin中它运行得很好......(我评论了你的console.dir()并添加了一些我自己的console.log(),但这就是我的全部内容。做到了) http://jsbin.com/tomewigobu/1/edit?html,console,output

我建议您检查一下您的聚合物版本是否已更新,应该有所帮助。