Javascript 聚合事件处理程序 我的目标
我的目标是在一个聚合物自定义元素中实现Google GeogoArt API,以创建一个可选的美国地图 我期望看到的是。。。 ,我希望看到所选项目记录到控制台 我所看到的。。。 相反,我看到以下错误:Javascript 聚合事件处理程序 我的目标,javascript,polymer,polymer-1.0,Javascript,Polymer,Polymer 1.0,我的目标是在一个聚合物自定义元素中实现Google GeogoArt API,以创建一个可选的美国地图 我期望看到的是。。。 ,我希望看到所选项目记录到控制台 我所看到的。。。 相反,我看到以下错误: Cannot read property 'getSelection' of undefined. Cannot read property 'draw' of undefined at x-element.Polymer._drawRegionsMap 尝试的解决方案 下。和。(每一条中的注
Cannot read property 'getSelection' of undefined.
Cannot read property 'draw' of undefined at x-element.Polymer._drawRegionsMap
尝试的解决方案
下。和。(每一条中的注释都反映了另一种尝试。)
在我尝试的解决方案中,我尝试将chart
变量作为属性持久化。但该操作失败,出现以下错误:
Cannot read property 'getSelection' of undefined.
Cannot read property 'draw' of undefined at x-element.Polymer._drawRegionsMap
我怎样才能让它工作
原始代码--http://jsbin.com/zaqutegima/edit?html,控制台,输出
<!doctype html>
<head>
<meta charset="utf-8">
<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link href="polymer/polymer.html" rel="import">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
</head>
<body>
<dom-module id="x-element">
<template>
<style>
#geochart {
width: 100%;
max-height: 500px;
}
</style>
<button on-tap="_show">Show</button>
<div id="geochart"></div>
</template>
<script>
(function(){
Polymer({
is: 'x-element',
properties: {
items: {
type: Array,
value: function() {
return [['State', 'Select'], ['Alaska', 0], ['Alabama', 0], ['Arkansas', 0], ['Arizona', 0], ['California', 0], ['Colorado', 0], ['Connecticut', 0], ['Delaware', 0], ['Florida', 0], ['Georgia', 0], ['Hawaii', 0], ['Iowa', 0], ['Idaho', 0], ['Illinois', 0], ['Indiana', 0], ['Kansas', 0], ['Kentucky', 0], ['Louisiana', 0], ['Massachusetts', 0], ['Maryland', 0], ['Maine', 0], ['Michigan', 0], ['Minnesota', 0], ['Missouri', 0], ['Mississippi', 0], ['Montana', 0], ['North Carolina', 0], ['North Dakota', 0], ['Nebraska', 0], ['New Hampshire', 0], ['New Jersey', 0], ['New Mexico', 0], ['Nevada', 0], ['New York', 0], ['Ohio', 0], ['Oklahoma', 0], ['Oregon', 0], ['Pennsylvania', 0], ['Rhode Island', 0], ['South Carolina', 0], ['South Dakota', 0], ['Tennessee', 0], ['Texas', 0], ['Utah', 0], ['Virginia', 0], ['Vermont', 0], ['Washington', 0], ['Wisconsin', 0], ['West Virginia', 0], ['Wyoming', 0],];
}
},
options: {
type: Object,
notify: true,
value: {
region: 'US',
displayMode: 'regions',
resolution: 'provinces',
legend: 'none',
}
},
/** /
chart: {
type: Object,
notify: true,
computed: '_computeChart()',
},
/**/
},
/** /
_computeChart: function() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
get data() {
return google.visualization.arrayToDataTable(this.items);
},
/**/
get chart() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
ready: function(){
google.charts.load('current', {
'packages': ['geochart']
});
google.charts.setOnLoadCallback(this._drawRegionsMap.bind(this));
},
_drawRegionsMap: function() {
this.chart.draw(this.data, this.options);
},
_selectHandler: function() {
var selectedItem = this.chart.getSelection();
console.log(selectedItem);
},
_show: function() {
//console.log(this.items);
//console.log(this.data);
console.log(this.chart);
},
});
})();
</script>
</dom-module>
<x-element></x-element>
</body>
<!doctype html>
<head>
<meta charset="utf-8">
<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link href="polymer/polymer.html" rel="import">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
</head>
<body>
<dom-module id="x-element">
<template>
<style>
#geochart {
width: 100%;
max-height: 500px;
}
</style>
<button on-tap="_show">Show</button>
<div id="geochart"></div>
</template>
<script>
(function(){
Polymer({
is: 'x-element',
properties: {
items: {
type: Array,
value: function() {
return [['State', 'Select'], ['Alaska', 0], ['Alabama', 0], ['Arkansas', 0], ['Arizona', 0], ['California', 0], ['Colorado', 0], ['Connecticut', 0], ['Delaware', 0], ['Florida', 0], ['Georgia', 0], ['Hawaii', 0], ['Iowa', 0], ['Idaho', 0], ['Illinois', 0], ['Indiana', 0], ['Kansas', 0], ['Kentucky', 0], ['Louisiana', 0], ['Massachusetts', 0], ['Maryland', 0], ['Maine', 0], ['Michigan', 0], ['Minnesota', 0], ['Missouri', 0], ['Mississippi', 0], ['Montana', 0], ['North Carolina', 0], ['North Dakota', 0], ['Nebraska', 0], ['New Hampshire', 0], ['New Jersey', 0], ['New Mexico', 0], ['Nevada', 0], ['New York', 0], ['Ohio', 0], ['Oklahoma', 0], ['Oregon', 0], ['Pennsylvania', 0], ['Rhode Island', 0], ['South Carolina', 0], ['South Dakota', 0], ['Tennessee', 0], ['Texas', 0], ['Utah', 0], ['Virginia', 0], ['Vermont', 0], ['Washington', 0], ['Wisconsin', 0], ['West Virginia', 0], ['Wyoming', 0],];
}
},
options: {
type: Object,
notify: true,
value: {
region: 'US',
displayMode: 'regions',
resolution: 'provinces',
legend: 'none',
}
},
/**/
chart: {
type: Object,
notify: true,
computed: '_computeChart()',
},
/**/
},
_computeChart: function() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
get data() {
return google.visualization.arrayToDataTable(this.items);
},
/** /
get chart() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
ready: function(){
google.charts.load('current', {
'packages': ['geochart']
});
google.charts.setOnLoadCallback(this._drawRegionsMap.bind(this));
},
_drawRegionsMap: function() {
this.chart.draw(this.data, this.options);
},
_selectHandler: function() {
var selectedItem = this.chart.getSelection();
console.log(selectedItem);
},
_show: function() {
//console.log(this.items);
//console.log(this.data);
console.log(this.chart);
},
});
})();
</script>
</dom-module>
<x-element></x-element>
</body>
#地球艺术{
宽度:100%;
最大高度:500px;
}
显示
(功能(){
聚合物({
是‘x元素’,
特性:{
项目:{
类型:数组,
值:函数(){
返回[['State',Select'],['Alaska',0],'Alabama',0],'Arkansas',0],'亚利桑那',0],'California',0],'Colorado',0],'Delaware',0],'Florida',0],'Georgia',0],'aidaho',0],'伊利诺斯州','0],'印第安纳州','Kansas',0],'肯塔基州','路易斯安那州','0],'Massachusetts',0],',[马里兰州,0],“缅因州”,0],“密歇根州”,0],“明尼苏达州”,0],“密苏里州”,0],“密西西比州”,0],“蒙大拿州”,0],“北卡罗来纳州”,0],“北达科他州”,0],“内布拉斯加州”,0],“新罕布什尔州”,0],“新泽西州”,0],“新墨西哥州”,0],“内华达州”,0],“纽约州”,“0],“俄亥俄州”,“0],“俄克拉何马州”,“0],“俄勒冈州”,0],“宾夕法尼亚州”,0],['Rhode Island',0],'South Carolina',0],'South Dakota',0],'Tennessee',0],'Texas',0],'Utah',0],'Virginia',0],'Vermont',0],'Washington',0],'Wisconsin',0],'West Virginia',0],'Wyoming',0],];
}
},
选项:{
类型:对象,
通知:正确,
价值:{
地区:"美国",,
显示模式:“区域”,
决议:“各省”,
图例:“无”,
}
},
/** /
图表:{
类型:对象,
通知:正确,
计算:''u computeChart()',
},
/**/
},
/** /
_computeChart:函数(){
var out=new google.visualization.geograpart(this.$.geograpart);
google.visualization.events.addListener(out'select',this.\u selectHandler);
返回;
},
/**/
获取数据(){
返回google.visualization.arrayToDataTable(this.items);
},
/**/
获取图表(){
var out=new google.visualization.geograpart(this.$.geograpart);
google.visualization.events.addListener(out'select',this.\u selectHandler);
返回;
},
/**/
就绪:函数(){
google.charts.load('current'{
“包”:[“地球艺术”]
});
google.charts.setOnLoadCallback(this._DrawRegionMap.bind(this));
},
_DrawRegionMap:function(){
this.chart.draw(this.data,this.options);
},
_selectHandler:function(){
var selectedItem=this.chart.getSelection();
console.log(selectedItem);
},
_show:function(){
//console.log(this.items);
//console.log(this.data);
console.log(this.chart);
},
});
})();
尝试的解决方案--http://jsbin.com/migefasuxe/edit?html,控制台,输出
<!doctype html>
<head>
<meta charset="utf-8">
<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link href="polymer/polymer.html" rel="import">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
</head>
<body>
<dom-module id="x-element">
<template>
<style>
#geochart {
width: 100%;
max-height: 500px;
}
</style>
<button on-tap="_show">Show</button>
<div id="geochart"></div>
</template>
<script>
(function(){
Polymer({
is: 'x-element',
properties: {
items: {
type: Array,
value: function() {
return [['State', 'Select'], ['Alaska', 0], ['Alabama', 0], ['Arkansas', 0], ['Arizona', 0], ['California', 0], ['Colorado', 0], ['Connecticut', 0], ['Delaware', 0], ['Florida', 0], ['Georgia', 0], ['Hawaii', 0], ['Iowa', 0], ['Idaho', 0], ['Illinois', 0], ['Indiana', 0], ['Kansas', 0], ['Kentucky', 0], ['Louisiana', 0], ['Massachusetts', 0], ['Maryland', 0], ['Maine', 0], ['Michigan', 0], ['Minnesota', 0], ['Missouri', 0], ['Mississippi', 0], ['Montana', 0], ['North Carolina', 0], ['North Dakota', 0], ['Nebraska', 0], ['New Hampshire', 0], ['New Jersey', 0], ['New Mexico', 0], ['Nevada', 0], ['New York', 0], ['Ohio', 0], ['Oklahoma', 0], ['Oregon', 0], ['Pennsylvania', 0], ['Rhode Island', 0], ['South Carolina', 0], ['South Dakota', 0], ['Tennessee', 0], ['Texas', 0], ['Utah', 0], ['Virginia', 0], ['Vermont', 0], ['Washington', 0], ['Wisconsin', 0], ['West Virginia', 0], ['Wyoming', 0],];
}
},
options: {
type: Object,
notify: true,
value: {
region: 'US',
displayMode: 'regions',
resolution: 'provinces',
legend: 'none',
}
},
/** /
chart: {
type: Object,
notify: true,
computed: '_computeChart()',
},
/**/
},
/** /
_computeChart: function() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
get data() {
return google.visualization.arrayToDataTable(this.items);
},
/**/
get chart() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
ready: function(){
google.charts.load('current', {
'packages': ['geochart']
});
google.charts.setOnLoadCallback(this._drawRegionsMap.bind(this));
},
_drawRegionsMap: function() {
this.chart.draw(this.data, this.options);
},
_selectHandler: function() {
var selectedItem = this.chart.getSelection();
console.log(selectedItem);
},
_show: function() {
//console.log(this.items);
//console.log(this.data);
console.log(this.chart);
},
});
})();
</script>
</dom-module>
<x-element></x-element>
</body>
<!doctype html>
<head>
<meta charset="utf-8">
<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link href="polymer/polymer.html" rel="import">
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
</head>
<body>
<dom-module id="x-element">
<template>
<style>
#geochart {
width: 100%;
max-height: 500px;
}
</style>
<button on-tap="_show">Show</button>
<div id="geochart"></div>
</template>
<script>
(function(){
Polymer({
is: 'x-element',
properties: {
items: {
type: Array,
value: function() {
return [['State', 'Select'], ['Alaska', 0], ['Alabama', 0], ['Arkansas', 0], ['Arizona', 0], ['California', 0], ['Colorado', 0], ['Connecticut', 0], ['Delaware', 0], ['Florida', 0], ['Georgia', 0], ['Hawaii', 0], ['Iowa', 0], ['Idaho', 0], ['Illinois', 0], ['Indiana', 0], ['Kansas', 0], ['Kentucky', 0], ['Louisiana', 0], ['Massachusetts', 0], ['Maryland', 0], ['Maine', 0], ['Michigan', 0], ['Minnesota', 0], ['Missouri', 0], ['Mississippi', 0], ['Montana', 0], ['North Carolina', 0], ['North Dakota', 0], ['Nebraska', 0], ['New Hampshire', 0], ['New Jersey', 0], ['New Mexico', 0], ['Nevada', 0], ['New York', 0], ['Ohio', 0], ['Oklahoma', 0], ['Oregon', 0], ['Pennsylvania', 0], ['Rhode Island', 0], ['South Carolina', 0], ['South Dakota', 0], ['Tennessee', 0], ['Texas', 0], ['Utah', 0], ['Virginia', 0], ['Vermont', 0], ['Washington', 0], ['Wisconsin', 0], ['West Virginia', 0], ['Wyoming', 0],];
}
},
options: {
type: Object,
notify: true,
value: {
region: 'US',
displayMode: 'regions',
resolution: 'provinces',
legend: 'none',
}
},
/**/
chart: {
type: Object,
notify: true,
computed: '_computeChart()',
},
/**/
},
_computeChart: function() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
get data() {
return google.visualization.arrayToDataTable(this.items);
},
/** /
get chart() {
var out = new google.visualization.GeoChart(this.$.geochart);
google.visualization.events.addListener(out, 'select', this._selectHandler);
return out;
},
/**/
ready: function(){
google.charts.load('current', {
'packages': ['geochart']
});
google.charts.setOnLoadCallback(this._drawRegionsMap.bind(this));
},
_drawRegionsMap: function() {
this.chart.draw(this.data, this.options);
},
_selectHandler: function() {
var selectedItem = this.chart.getSelection();
console.log(selectedItem);
},
_show: function() {
//console.log(this.items);
//console.log(this.data);
console.log(this.chart);
},
});
})();
</script>
</dom-module>
<x-element></x-element>
</body>
#地球艺术{
宽度:100%;
最大高度:500px;
}
显示
(功能(){
聚合物({
是‘x元素’,
特性:{
项目:{
类型:数组,
值:函数(){
返回[['State',Select'],['Alaska',0],'Alabama',0],'Arkansas',0],'亚利桑那',0],'California',0],'Colorado',0],'Delaware',0],'Florida',0],'Georgia',0],'aidaho',0],'伊利诺斯州','0],'印第安纳州','Kansas',0],'肯塔基州','路易斯安那州','0],'Massachusetts',0],',[马里兰州,0],“缅因州”,0],“密歇根州”,0],“明尼苏达州”,0],“密苏里州”,0],“密西西比州”,0],“蒙大拿州”,0],“北卡罗来纳州”,0],“北达科他州”,0],“内布拉斯加州”,0],“新罕布什尔州”,0],“新泽西州”,0],“新墨西哥州”,0],“内华达州”,0],“纽约州”,“0],“俄亥俄州”,“0],“俄克拉何马州”,“0],“俄勒冈州”,0],“宾夕法尼亚州”,0],['Rhode Island',0],'South Carolina',0],'South Dakota',0],'Tennessee',0],'Texas',0],'Utah',0],'Virginia',0],'Vermont',0],'Washington',0],'Wisconsin',0],'West Virginia',0],'Wyoming',0],];
}
},
选项:{
类型:对象,
通知:正确,
价值:{
地区:"美国",,
显示模式:“区域”,
决议:“各省”,
图例:“无”,
}
},
/**/
图表:{
类型:对象,
通知:正确,
计算:''u computeChart()',
},
/**/
},
_computeChart:函数(){
var out=new google.visualization.geograpart(this.$.geograpart);
google.visualization.events.addListener(out'select',this.\u selectHandler);
返回;
},
/**/
获取数据(){
返回google.visualization.arrayToDataTable(this.items);
},
/** /
获取图表(){
var out=new google.visualization.geograpart(this.$.geograpart);
google.visualization.events.addListener(out'select',this.\u selectHandler);
返回;
},
/**/
就绪:函数(){
google.charts.load('current'{
“包”:[“地球艺术”]
});
google.charts.setOnLoadCallback(this._DrawRegionMap.bind(this));
},
_DrawRegionMap:function(){
this.chart.draw(this.data,this.options);
},
_selectHandler:function(){
var selectedItem=this.chart.getSelection();
console.log(selectedItem);
},
_show:function()