我创建了一个 AngularJS 指令来为 Google 地图自动完成包装一个 Geocomplete 插件。我正在尝试使其绑定到范围的属性,该属性是通过向现有元素添加“geocomplete”属性来指定的。
geocompleteModule.directive("geocomplete", function ($log, $timeout, $compile, $controller) {
return {
restrict: 'A',
priority: 200,
link: function (scope, element, attrs, ctrl) {
var autocomplete = $(element).geocomplete().bind("geocode:result", function (event, result) {
if(result.geometry && result.geometry.location) {
var location = result.geometry.location;
scope.$apply(function (s) {
s[attrs.geocomplete] = new Models.Point(location.lat(), location.lng());
});
}
});
}
};
});
但是,如果 geocomplete 属性中引用的属性是子属性,这将不起作用。例如:
<input geocomplete="location" />
作品。
<input geocomplete="search.location" />
不管用。
原生地,AngularJS 似乎能够用它自己的绑定来做到这一点,但我将如何自己去实现呢?
编辑
我知道如何使用 split 和 for 循环来完成此操作,但大概这不是“正确”的方式。