尝试将一个 Polymer 元素附加到另一个 Polymer 元素中
Trying to append a Polymer element in another Polymer element
我有一个 v-fire 聚合物 :
<script>
Polymer({
is: 'v-fire',
properties : {
onFire: {
type : String,
reflectToAttribute: true
}
},
firing: function () {
this.fire('fire');
}
})
</script>
我希望能够在我的 Polymer 元素中的任何地方使用它,使它们触发一个内部函数,使它们执行更新等特定任务,因此当 v-fire
调用 firing
.
比如我新建了一个对象来测试:
<script>
Polymer({
is: 'fire-tester',
_updateContent: function () {
alert('I get updated');
}
});
</script>
在index.html
…
<link rel="import" href="/components/fire-tester/fire-tester.html">
…
<body>
<fire-tester id="fire-tester"></fire-tester>
<script>
(function () {
var ft = document.getElementById('fire-tester');
// make a global v-fire Polymer
var vfire = document.createElement('v-fire');
// custom callback of the Polymer's that will include the v-fire
vfire.onFire = '_updateContent';
/**
* And here, I try to insert the v-fire in the fire-tester Polymer
*/
Polymer.dom(ft.root).insertBefore(
vfire,
Polymer.dom(ft.root).childNodes[0]
);
// the dom is pretty neat, fire-tester contains v-fire with the custom on-fire callback
// then I try to fire the event
vfire.firing(); // but nothing happen
});
</script>
它不起作用,因为我相信 v-fire 在插入 fire-tester 时未被处理。有没有办法告诉 Polymer 处理 dom 的块,就好像它是在本地 DOM 中声明的一样?
看来您对事件系统的处理不正确。您想要的是 运行 在 fire-tester
上检测到子 v-fire
元素上的 fire
事件时的方法,对吗?这就是我将它们放在一起的方式:
v-fire.html
<script>
Polymer({
is: 'v-fire',
firing: function() {
this.fire('fire');
}
});
</script>
火-tester.html
<script>
Polymer({
is: 'fire-tester',
listeners: {
'fire': '_updateContent'
},
_updateContent: function () {
alert('I get updated');
}
});
</script>
index.html
<fire-tester id="fire-tester"></fire-tester>
<script>
(function(){
var ft = document.getElementById('fire-tester');
var vfire = document.createElement('v-fire');
Polymer.dom(ft.root).insertBefore(
vfire,
Polymer.dom(ft.root).childNodes[0]
);
vfire.firing();
})();
</script>
我有一个 v-fire 聚合物 :
<script>
Polymer({
is: 'v-fire',
properties : {
onFire: {
type : String,
reflectToAttribute: true
}
},
firing: function () {
this.fire('fire');
}
})
</script>
我希望能够在我的 Polymer 元素中的任何地方使用它,使它们触发一个内部函数,使它们执行更新等特定任务,因此当 v-fire
调用 firing
.
比如我新建了一个对象来测试:
<script>
Polymer({
is: 'fire-tester',
_updateContent: function () {
alert('I get updated');
}
});
</script>
在index.html
…
<link rel="import" href="/components/fire-tester/fire-tester.html">
…
<body>
<fire-tester id="fire-tester"></fire-tester>
<script>
(function () {
var ft = document.getElementById('fire-tester');
// make a global v-fire Polymer
var vfire = document.createElement('v-fire');
// custom callback of the Polymer's that will include the v-fire
vfire.onFire = '_updateContent';
/**
* And here, I try to insert the v-fire in the fire-tester Polymer
*/
Polymer.dom(ft.root).insertBefore(
vfire,
Polymer.dom(ft.root).childNodes[0]
);
// the dom is pretty neat, fire-tester contains v-fire with the custom on-fire callback
// then I try to fire the event
vfire.firing(); // but nothing happen
});
</script>
它不起作用,因为我相信 v-fire 在插入 fire-tester 时未被处理。有没有办法告诉 Polymer 处理 dom 的块,就好像它是在本地 DOM 中声明的一样?
看来您对事件系统的处理不正确。您想要的是 运行 在 fire-tester
上检测到子 v-fire
元素上的 fire
事件时的方法,对吗?这就是我将它们放在一起的方式:
v-fire.html
<script>
Polymer({
is: 'v-fire',
firing: function() {
this.fire('fire');
}
});
</script>
火-tester.html
<script>
Polymer({
is: 'fire-tester',
listeners: {
'fire': '_updateContent'
},
_updateContent: function () {
alert('I get updated');
}
});
</script>
index.html
<fire-tester id="fire-tester"></fire-tester>
<script>
(function(){
var ft = document.getElementById('fire-tester');
var vfire = document.createElement('v-fire');
Polymer.dom(ft.root).insertBefore(
vfire,
Polymer.dom(ft.root).childNodes[0]
);
vfire.firing();
})();
</script>