dart谷歌地图-触发事件
我尝试在自动完成框中添加一个侦听器,以便在按enter键时选择第一个选项,但它不起作用dart谷歌地图-触发事件,dart,Dart,我尝试在自动完成框中添加一个侦听器,以便在按enter键时选择第一个选项,但它不起作用 event.addDomListener(input, 'keypress', (e) { if (e.keyCode == 13) { event.trigger(html.document.getElementById('pac-input').innerHtml, 'keydown', html.KeyCode.DOWN); } }); 我不确定 html.docume
event.addDomListener(input, 'keypress', (e) {
if (e.keyCode == 13) {
event.trigger(html.document.getElementById('pac-input').innerHtml, 'keydown',
html.KeyCode.DOWN);
}
});
我不确定
html.document.getElementById('pac-input').innerHtml
谢谢你的帮助
[编辑]
我使用angular2.0.0-beta.21
我的模板是:
<input id="pac-input" class="controls" type="text"
placeholder="Enter a location">
<div id="map-canvas" style="height: 500px;"></div>
以下代码应该可以工作:
import'dart:js_util'show jsify;
addDomListener(输入'keypress',(e){
断言(e是html.KeyboardEvent);
if(e.keyCode==html.keyCode.ENTER){
触发器(输入'keydown',jsify({'keyCode':html.keyCode.DOWN});
}
});
您也可以使用以下选项触发事件:
input.dispatchEvent(新的html.KeyEvent('keydown',keyCode:html.keyCode.DOWN));
看起来像是我想使用谷歌地图库中的事件触发器,但这可能可以通过分派
方法完成。我想主要的问题是创建一个键盘事件
,并设置正确的键码和其他属性。Google Maps Api的触发器
实际上是针对Google.Maps类中的对象,而不是文本输入字段。感谢您的回复。我尝试了event.trigger(输入,'keydown',{keyCode:40})没有任何成功。谢谢你的回答。不幸的是,它仍然不起作用,建议的地址仍然存在,但第一选择没有焦点,就像我按下向下键时应该有的那样。
@Component(
selector: 'myComponent',
templateUrl: 'template.html',
pipes: const [IntlPipe]
)
class MyComponent implements OnInit {
final UserService _userService;
final IntlService _intlService;
Autocomplete autocomplete;
GMap map;
String infoMessage = "";
String errorMessage = "";
CornersComponent(this._userService, this._intlService);
@override
ngOnInit() {
var mapOptions = new MapOptions()
..zoom = 13
..maxZoom = 19
..minZoom = 12
..center = new LatLng(48.871083, 2.346348)
..mapTypeId = MapTypeId.ROADMAP
..streetViewControl = false
..panControl = false
..mapTypeControl = false
..scrollwheel = false
..styles = <MapTypeStyle>[
new MapTypeStyle()
..featureType = MapTypeStyleFeatureType.POI_BUSINESS
..elementType = MapTypeStyleElementType.LABELS
..stylers = <MapTypeStyler>[
new MapTypeStyler()
..visibility = 'off'
]
];
map = new GMap(html.querySelector("#map-canvas"), mapOptions);
var input = html.document.getElementById('pac-input') as html
.InputElement;
map.controls[ControlPosition.TOP_LEFT].push(input);
autocomplete = new Autocomplete(input);
autocomplete.bindTo('bounds', map);
final infowindow = new InfoWindow();
final marker = new Marker(new MarkerOptions()
..map = map
..anchorPoint = new Point(0, -29));
autocomplete.onPlaceChanged.listen((_) {
infowindow.close();
marker.visible = false;
final place = autocomplete.place;
if (place.geometry == null) {
return;
}
// If the place has a geometry, then present it on a map.
if (place.geometry.viewport != null) {
map.fitBounds(place.geometry.viewport);
} else {
map.center = place.geometry.location;
map.zoom = 15; // Why 17? Because it looks good.
}
marker.icon = new Icon()
..url = place.icon
..size = new Size(71, 71)
..origin = new Point(0, 0)
..anchor = new Point(17, 34)
..scaledSize = new Size(35, 35);
marker.position = place.geometry.location;
marker.visible = true;
String address = '';
if (place.addressComponents != null) {
address = [
(place.addressComponents[0] != null &&
place.addressComponents[0].shortName != null
? place.addressComponents[0].shortName
: ''),
(place.addressComponents[1] != null &&
place.addressComponents[1].shortName != null
? place.addressComponents[1].shortName
: ''),
(place.addressComponents[2] != null &&
place.addressComponents[2].shortName != null
? place.addressComponents[2].shortName
: '')
].join(' ');
}
infowindow.content = '<div><strong>${place.name}</strong><br>${address}';
infowindow.open(map, marker);
});
event.addDomListener(input, 'keypress', (e) {
assert(e is html.KeyboardEvent);
if (e.keyCode == html.KeyCode.ENTER) {
event.trigger(input, 'keydown',
new html.KeyEvent('keydown', keyCode: html.KeyCode.DOWN));
}
});
}
}
function myJavascriptMethod() {
var input = document.getElementById('pac-input');
google.maps.event.addDomListener(input, 'keypress', function (e) {
if (e.keyCode === 13) {
google.maps.event.trigger(this, 'keydown', {"keyCode": 40});
}
});
}