Кто-то застрелит меня, если я ошибаюсь, но, насколько я знаю, вам нужно использовать это, если вы загрузите внешний скрипт после загрузки zone.js
. Это означает, что любые изменения внутри этого скрипта не будут обнаружены обнаружением изменений. Это происходит при загрузке карт Google позже. Может быть ....
В любом случае, если это так, тогда вы должны использовать метод ngZone.run
.
Если вы хотите вручную запускать что-то вне обнаружения изменений, если вы хотите заставить что-то не запускать его, вы должны использовать runOutsideAngular
. Это не ваш прецедент, поэтому вы можете безопасно удалить это.
Наиболее частое использование этой службы заключается в оптимизации производительности при запуске работы, состоящей из одной или нескольких асинхронных задач, t требуется обновление пользовательского интерфейса или обработка ошибок, которые будут обрабатываться с помощью углового устройства. Такие задачи можно запустить с помощью runOutsideAngular, и при необходимости эти задачи могут повторно войти в угловую зону через run.
blockquote>. Но, с другой стороны, вы отмечаете, что привязка данных в dww работаю для вас (
ngModel
). Я думаю, что реальная проблема заключается в том, что вы обновляете свойство на существующем объекте. Это само по себе не вызывает двухстороннее обнаружение изменений и является фактической причиной, по которой работаетngZone.run
. Если это так, тоchangeRef.detectChanges
не будет работать, и вам лучше использоватьApplicationRef
и сделатьtick()
. Или не используйте двустороннюю привязку данных и используйте шаблонdata goes down, events go up
.constructor(private appRef: ApplicationRef){} getLocation(address: string): void { let mygc = new google.maps.Geocoder(); mygc.geocode({ 'address': address }, (results, status) => { let data: any = results[0]; this.myObject.myData = { lat: data.geometry.location.lat(), lng: data.geometry.location.lng() }; this.appRef.tick(); }); }
Это, очевидно, работает, поскольку оно ничем не отличается от
ngZone.run
. Но основная причина, по которой обнаружение изменений не срабатывает, заключается в том, чтоgoogle.maps
использует свои собственные вызовы events / addEventListener. Эти события не называются обезьяной, запятнаннымиzone.js
, и поэтому они не запускаются в угловой зоне, что логически не приведет к циклу обнаружения изменений.Таким образом, вы можете решить это, используя
ngZone.run
илиApplicationRef.tick
. Где я полагаю, чтоngZone.run
имеет наибольший смысл, потому что он позволяет вам (re) войти в угловую зону, что именно вы хотите.Для «хорошего» чтения о
NgZone
вы может проверить api
Попробуйте перезапустить Apache
(на серверах Ubuntu: service apache restart
или /etc/init.d/apache2 restart
)
Просто удалите строку о перенаправлении и
. Кроме того, всем, у кого есть Google Chrome
Это очистит весь ваш кеш и вас «Хорошо
Постоянный кеш переадресации, вероятно, находится в браузере, и в большинстве браузеров сложно удалить его. Но сначала попробуйте использовать другой браузер, чтобы убедиться, что это так.
Если проблема в браузере: это случилось со мной раньше, и очистка данных браузера для этого веб-сайта была недостаточной. Я также понял, что есть трюк для каждого браузера. В Safari (для Mac) мне нужно было выбрать «Сбросить Safari ...» (нет паники, при этом ни одна из этих закладок не удаляет ни расширения). Я не могу вспомнить, как я сделал это для Chrome, но был менее травматичным.
Урок. При игре с переадресацией сначала используйте [302]. После того, как все было проверено нормально, измените код на [301]
Браузер тайно перетаскивает 301, пока не будет сказано иначе. Это поведение по умолчанию: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2 .
Чтобы исправить его в IE9:
С помощью Chrome попробуйте посетить веб-сайт с помощью Console Developers Console open (F12)
Убедитесь, что у вас есть «Отключить кеш» в разделе «Сеть»
Это будет обходить 301 кеширование переадресации на стороне браузера.
Я знаю, что это старый пост, но я провел некоторое время в Интернете и на моем сервере, чтобы найти ответ.
Если вы создали файл .htaccess с постоянным перенаправлением, сервер скопирует это перенаправление в следующем файле: "/var/.htaccess".
Вы должны отредактировать этот файл, чтобы удалить перенаправление перед очисткой кеша вашего браузера.
Он работал на моем Debian Jessie.
/var
).
– Peanut
9 June 2015 в 14:59