我对火狐的Polymer.js有一个问题。
这是我的聚合物元素。
<!-- Imports polymer -->
<link rel="import" href="../../bower_components/polymer/polymer.html">
<!-- Defines element markup -->
<dom-module id="scoreboard-bar">
...
<script>
Polymer({
is: 'scoreboard-bar',
properties: {
totalCounter: {
type: Number,
value: 0
},
},
getTotalCounter: function () {
return this.totalCounter;
},
setTotalCounter: function (totalCounter) {
this.totalCounter = totalCounter;
},
});
</script>
</dom-module>这是将聚合物组件导入主html文件:
<head>
<!-- Imports polyfill -->
<script src="{% static "polymer/bower_components/webcomponentsjs/webcomponents-lite.min.js" %}"> </script>
<!-- Imports custom elements -->
<link rel="import" href="{% static "polymer/components/entity-vibeboard/scoreboard-bar.html" %}">
</head>若要在加载页时设置计数器,请执行以下操作:
<body>
<div>
<scoreboard-bar id="scoreboardBarFlag"></scoreboard-bar>
</div>
<script>
$( document ).ready(function() {
var scoreboardBarFlagPolymer = document.querySelector('#scoreboardBarFlag');
scoreboardBarFlagPolymer.setTotalCounter(10);
});
</script>
</body>这段代码在Google上运行得很好,但在Firefox上却不起作用。我收到的错误是:
TypeError: scoreboardBarFlagPolymer.setTotalCounter is not a function如果我在Firebug上添加一个断点,进行调试,这个函数在聚合物组件上是可用的,但是在加载页面之后它就不可用了。
我认为这个错误是因为javascript函数试图在加载页面上的聚合物组件之前设置计数器。
知道如何在加载页面上的所有聚合物组件后运行javascript函数吗?问题是,它只在Firefox上,在Chrome上--它很好用。
发布于 2015-07-22 18:13:46
尝试侦听WebComponentsReady事件,如所描述的在webcomponents.js文档中
window.addEventListener('WebComponentsReady', function(e) {
// imports are loaded and elements have been registered
console.log('Components are ready');
});https://stackoverflow.com/questions/31569251
复制相似问题