我已經創建了一個AngularJS指令來封裝Google地圖自動完成的Geocomplete插件。我試圖將它綁定到作用域的屬性,這是通過向現有元素添加「geocomplete」屬性來指定的。在AngularJS指令中正確實現綁定對象屬性
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似乎可以用它自己的綁定來做到這一點,但是我怎麼去實現這個呢?
編輯
我知道這是如何使用拆分和循環來完成,但據推測,這是不是「正確」的方式。
嗨賈森,這個答案差不多,但並不完全。我已經更新它來修復它。 –