Директива:
app.directive('chatAssistant', chatAssistant);
chatAssistant.$inject = ['$rootScope', '$state'];
function chatAssistant($rootScope, $state) {
return {
link: function() {
let listener = function() {
!(function(g, s, q, r, d) {
r = g[r] = g[r] || function() {
(r.q = r.q || []).push(arguments);
};
d = s.createElement(q);
q = s.getElementsByTagName(q)[0];
d.src = '//placeholder.cloudfront.net/tracker.js';
q.parentNode.insertBefore(d, q);
})(window, document, 'script', '_gs');
_gs('GSN-XXXXXX-N');
if ($state.current.name === 'login' ||
$state.current.name === 'register' ||
$state.current.name === 'forgotPassword' ||
$state.current.name === 'passwordReset') {
_gs('set', 'chat', {button: false});
} else {
_gs('set', 'chat', {button: true});
}
};
$rootScope.$on('$viewContentLoaded', listener);
},
};
}
HTML, где он вставлен:
<div ui-view
chat-assistant>
Эта директива просто запускает код Javascript, когда загружается DOM или <div>
, который содержит директиву.Это прекрасно работает, но мне нужна директива для обновления или повторного запуска при каждом изменении маршрута.По сути, он показывает / скрывает элемент на основе маршрута, который вы можете увидеть в операторе if / else.
В настоящее время он работает, но вы должны вручную обновить страницу для повторного выполнения директивы и получитьэлемент для отображения, если вы находитесь на странице, где он должен быть показан.
TLDR: мне нужна эта директива для повторного запуска при каждом изменении маршрута.