繁体   English   中英

Umbraco 7自定义属性编辑器

[英]Umbraco 7 Custom Property Editor

我正在使用Umbraco 7.4,我创建了一个自定义谷歌地图属性编辑器,它在地图上启用了自动完成功能。

我在文档类型的google map属性下方创建了一个单独的标准textbox属性,当用户从google的自动填充功能中选择自动提示时,我会更新标准textbox属性的值,但是当我保存并发布节点时,该值实际上并未与文本框一起存储。 这很奇怪,因为如果我手动将文本写入文本框并发布,它就可以很好地存储数据。 我本质上是一个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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM