【发布时间】:2016-07-29 08:29:48
【问题描述】:
我需要在 angularjs 单页应用程序中使用 google-places 自动完成输入,该输入应作为服务运行并在运行时初始化一次。在导航的情况下,带有 goolge-places 的初始化元素和适当的范围被破坏。
导航到包含地点自动完成输入字段的页面后,我将重新使用地点输入字段。使用element.replaceWith() 方法效果很好。
替换元素后,我无法通过“重置”按钮重置输入。如何将新生成的范围绑定到“重置”按钮和旧范围变量。因为旧的作用域和元素被导航事件破坏了?
.factory('myService', function() {
var gPlace;
var s, e;
var options = {
types: [],
componentRestrictions: {country: 'in'}
};
function init() {
}
function set(element, scope) {
console.log('set');
if (!gPlace) {
e = element;
gPlace = new google.maps.places.Autocomplete(element[0], options);
google.maps.event.addListener(gPlace, 'place_changed', function() {
scope.$apply(function() {
scope.place.chosenPlace = element.val();
});
});
} else {
element.replaceWith(e);
}
}
init();
return {
'init':init,
'set':set
};
});
导航(元素和范围破坏)将在此 plunk 中由 ng-if 指令模拟,该指令将由“删除”按钮触发。
【问题讨论】:
标签: angularjs google-maps angularjs-scope google-places replacewith