Umbraco 7 自定义 属性 编辑器
Umbraco 7 Custom Property Editor
我使用的是 Umbraco 7.4,我创建了一个自定义 google 地图 属性 编辑器,它在地图上启用了自动完成功能。
我在我的文档类型 google 地图 属性 下方创建了一个单独的标准文本框 属性,当用户从 google 中选择自动建议时s 自动完成功能,我让它更新标准文本框 属性 的值,但是当我保存并发布节点时,该值实际上并未与文本框一起存储。这很奇怪,因为如果我手动将文本写入文本框并发布,它会很好地存储数据。我天生就是一名 jQuery 开发人员,所以我很惊讶地看到语法在 Angular 控制器内部工作......非常感谢任何帮助!
我更新文本框值的事件侦听器(最后一行)
autocomplete.addListener('place_changed', function () {
infowindow.close();
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
var coords = new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng());
map.setCenter(coords);
// Set the position of the marker using the place ID and location.
marker.setPlace({
placeId: place.place_id,
location: coords
});
marker.setVisible(true);
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' +
'Place ID: ' + place.place_id + '<br>' +
place.formatted_address);
infowindow.open(map, marker);
codeLatLng(coords, geocoder);
$('#googlePlaceID').val(place.place_id).text(place.place_id);
});
我想出了一个 hacky 解决方案来引导 Angular 看到文本是在另一个文本框 属性 编辑器上写的,但它有效。我将原始代码块中的最后一行替换为:
$('#googlePlaceID').select().focus().val(place.place_id);
var e = document.getElementById('googlePlaceID');
var $e = angular.element(e);
$e.triggerHandler('input');
我使用的是 Umbraco 7.4,我创建了一个自定义 google 地图 属性 编辑器,它在地图上启用了自动完成功能。
我在我的文档类型 google 地图 属性 下方创建了一个单独的标准文本框 属性,当用户从 google 中选择自动建议时s 自动完成功能,我让它更新标准文本框 属性 的值,但是当我保存并发布节点时,该值实际上并未与文本框一起存储。这很奇怪,因为如果我手动将文本写入文本框并发布,它会很好地存储数据。我天生就是一名 jQuery 开发人员,所以我很惊讶地看到语法在 Angular 控制器内部工作......非常感谢任何帮助!
我更新文本框值的事件侦听器(最后一行)
autocomplete.addListener('place_changed', function () {
infowindow.close();
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
var coords = new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng());
map.setCenter(coords);
// Set the position of the marker using the place ID and location.
marker.setPlace({
placeId: place.place_id,
location: coords
});
marker.setVisible(true);
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' +
'Place ID: ' + place.place_id + '<br>' +
place.formatted_address);
infowindow.open(map, marker);
codeLatLng(coords, geocoder);
$('#googlePlaceID').val(place.place_id).text(place.place_id);
});
我想出了一个 hacky 解决方案来引导 Angular 看到文本是在另一个文本框 属性 编辑器上写的,但它有效。我将原始代码块中的最后一行替换为:
$('#googlePlaceID').select().focus().val(place.place_id);
var e = document.getElementById('googlePlaceID');
var $e = angular.element(e);
$e.triggerHandler('input');