Polymer 聚合物1.0子元素未向父元素开火
我在Polymer 1.0上尝试从子元素向其父元素激发事件时遇到问题,我看不出我做错了什么 编辑:添加更多代码 儿童守则:Polymer 聚合物1.0子元素未向父元素开火,polymer,polymer-1.0,Polymer,Polymer 1.0,我在Polymer 1.0上尝试从子元素向其父元素激发事件时遇到问题,我看不出我做错了什么 编辑:添加更多代码 儿童守则: <link rel="import" href="../components/polymer/polymer.html" /> <link rel="import" href="../components/iron-input/iron-input.html" /> <link rel="import" href="../components/
<link rel="import" href="../components/polymer/polymer.html" />
<link rel="import" href="../components/iron-input/iron-input.html" />
<link rel="import" href="../components/iron-icon/iron-icon.html" />
<link rel="import" href="../components/paper-input/paper-input container.html" />
<link rel="import" href="../components/paper-input/paper-input-error.html" />
<link rel="import" href="../components/iron-input/iron-input.html" />
<link rel="import" href="custom-table.html" />
<dom-module id="master-admin">
<style is="custom-style">
[...]
</style>
<template>
<custom-table selectable collist="{{columns}}" data="{{data}}">
</custom-table>
<div id="newrow" class="horizontal layout" hidden>
<template is="dom-repeat" items="{{columns}}" as="col">
<paper-input-container class="container flex">
<label class="label">{{col.name}}</label>
<input class="input" id="input" is="iron-input">
</paper-input-container>
</template>
</div>
<div id="iconsdiv" class="horizontal layout">
<iron-icon id="adicon" icon="add-circle" on-click="addrow"></iron-icon>
<div class="flex"></div>
<iron-icon id="delicon" icon="cancel" on-click="delrow"></iron-icon>
<iron-icon id="edicon" icon="create" on-click="editrow"></iron-icon>
</div>
</template>
<script>
Polymer({
is: 'master-admin',
properties: {
doctype: String,
columns: Array,
data: Array
},
datachanged: function () {
debugger;
var updatedata = {
data: this.data,
doctype: this.doctype
};
this.fire('data-updated', updatedata);
},
addrow: function (e) {
[...]
this.datachanged();
},
delrow: function (e) {
[...]
this.datachanged();
},
editrow: function (e) {
[...]
this.datachanged();
}
});
</script>
</dom-module>
[...]
{{col.name}}
聚合物({
是‘管理员大师’,
特性:{
doctype:String,
列:数组,
数据:数组
},
datachanged:函数(){
调试器;
变量更新数据={
数据:这个数据,
doctype:this.doctype
};
此项。火灾(“数据更新”,更新数据);
},
addrow:函数(e){
[...]
this.datachanged();
},
德罗:函数(e){
[...]
this.datachanged();
},
editrow:函数(e){
[...]
this.datachanged();
}
});
关于家长:
<master-admin
doctype="{{master.DocumentalTypeId}}"
columns="{{master.Columns}}"
data="{{master.Data}}"
on-data-updated="masterupdated">
</master-admin>
masterupdated: function () {
alert('updated master!');
}
masterupdated:函数(){
警报(“已更新的主机!”);
}
需要明确的是,datachanged
工作正常,应该在什么时候调用它<父项上的代码>主更新未更新
警报从未触发,代码也没有给出任何错误。我猜Polymer 1.0的工作原理与Polymer 1.0不同。您描述的基本设置确实起作用,细节中一定有问题。以下是一个例子:
身体{
字体系列:无衬线;
}
更新数据
//仅当(1)在主文档中,以及(2)在非Chrome浏览器上时才需要此选项
addEventListener('WebComponentsReady',函数(){
聚合物({
是‘管理员大师’,
updateData:function(){
本次火灾(“数据更新”);
}
});
});
//仅当(1)在主文档中,以及(2)在非Chrome浏览器上时才需要此选项
addEventListener('WebComponentsReady',函数(){
聚合物({
是‘x父’,
masterupdated:function(){
document.body.appendChild(this.create('h3',{textContent:'data updated!'));
}
});
});
您描述的基本设置确实有效,一定是某个地方的细节有问题。以下是一个例子:
身体{
字体系列:无衬线;
}
更新数据
//仅当(1)在主文档中,以及(2)在非Chrome浏览器上时才需要此选项
addEventListener('WebComponentsReady',函数(){
聚合物({
是‘管理员大师’,
updateData:function(){
本次火灾(“数据更新”);
}
});
});
//仅当(1)在主文档中,以及(2)在非Chrome浏览器上时才需要此选项
addEventListener('WebComponentsReady',函数(){
聚合物({
是‘x父’,
masterupdated:function(){
document.body.appendChild(this.create('h3',{textContent:'data updated!'));
}
});
});
你能试试这个吗
var template=document.querySelector('#t');
template.masterupdated=函数(){
日志(“主更新!!”;
};
你能试试这个吗
var template=document.querySelector('#t');
template.masterupdated=函数(){
日志(“主更新!!”;
};
您可以发布主管理员定义吗?它是否依赖于core-X元素?似乎没有调用您的datachanged
函数。您的观察者在
中是如何设置的?您不需要在父元素中设置“listener”属性吗@zerodevx datachanged不是问题所在,代码实际上放在那里,它不是一个属性观察器,而是一个在一些更改后从其他函数调用的函数,正如您现在在我的问题上所看到的那样。@RobertRowntree据我所知,这是不必要的,事实上我有类似的东西在另一个元素上工作得很好,未使用侦听器您可以发布主管理员定义吗?它是否依赖于core-X元素?似乎没有调用您的datachanged
函数。您的观察者在
中是如何设置的?您不需要在父元素中设置“listener”属性吗@zerodevx datachanged不是问题所在,代码实际上放在那里,它不是一个属性观察器,而是一个在一些更改后从其他函数调用的函数,正如您现在在我的问题上所看到的那样。@RobertRowntree据我所知,这是不必要的,事实上我有类似的东西在另一个元素上工作得很好,不是监听器使用我实际上让这个设置在另一个元素上工作没有任何问题,但是不能在这个元素上工作,我只是迷路了。。。我更新了我的问题,以更准确地反映我在做什么。谢谢你的例子,我实际上有这个设置在另一个元素上工作没有任何问题,但不能在这个元素上工作,我只是迷路了。。。我更新了我的问题,以更准确地反映我在做什么。谢谢你的例子