У меня есть код, который позволяет выбрать место с карт Google.
Когда вы выбираете место, оно показывает, что вы выбрали, и его LAT/LON:
Вы можете увидеть это здесь
Но этот код не использует controller as
синтаксиса.
Поэтому я изменил его:
Вот НОВЫЙ код
Но теперь, когда я выбираю место - он не обновляет значения.
Вопрос
Как я могу исправить свой код, чтобы он все еще взаимодействовал через:
scope: {
details: '=',
ngAutocomplete: '=',
options: '=',
lt:'=',
ln:'=',
}
(Когда я перехожу к controller as
)
Я имею в виду - не следует ли использовать controller
(не scope
) в:
link: function(scope, element, attrs, controller) ??
Что мне не хватает?
Если они скажут, что теперь ("контроллер как" синтаксис) контроллер является нашей моделью viewModel, поэтому я не вижу ничего плохого в использовании параметра контроллера и доступа:
controller.lt = ...;
controller.ln = ...;
И я, очевидно, ошибаюсь здесь...
Кажется, вы смешиваете несколько концепций, потому что пытаетесь использовать один и тот же контроллер как в своей директиве, так и вне ее.
Даже если вы используете controller As
вне вашей директивы, реализация внутри вашей директивы должна оставаться неизменной. Все дело в том, что директива не должна волновать, что происходит за ее пределами. Опция scope: {}
позволяет вам указать директиву, какие значения нужно разместить в своей собственной области, на основе предоставленных значений атрибутов.
Поэтому ответ заключается в том, чтобы оставить свой код директивы неизменным от вашего первоначального примера, и все будет работать.
Рабочий plnkr: http://plnkr.co/edit/xyTX95JA2biYJmWPKxzZ?p=preview
Замечание: вам следует избегать префикса ваших компонентов с помощью ng
. Префикс ng
предназначен для компонентов, которые встроены в Angular, и вы должны использовать свой собственный префикс.
new Controller()
функция new Controller()
. И поэтому я подумал, что директива должна иметь доступ к этому INSTANCE new Controller()
.... нет?
scope
.
В итоге я использовал $ scope. $ Watch();
$scope.$watch(function() {
return vm.location_result;
}, function(location) {
if (location) {
// do something
}
});
Пример скрипта: http://jsfiddle.net/n3ztwucL/
GitHub Gist: https://gist.github.com/robrothedev/46e1b2a2470b1f8687ad
scope
ссылок, но используетеcontroller