У меня возникла проблема с получением данных, которые я передаю в свою директиву для обновления при обновлении DOM. В этой директиве выделяется активная вкладка в sidenav в зависимости от того, где они прокручиваются на странице. Вот fiddle example того, что я сделал.Обновить данные в угловой директиве
На моем местном сайте есть большие разделы, которые условно показывают или скрывают, и пользователь может & может часто меняться. Таким образом, это изменит положение идентификаторов элементов, которые я сохранил в resultsSections
. Когда позиции меняются, они не обновляются в директиве.
<script type="text/javascript">
$scope.getResultsSectionPosition = function() {
var resultsSections = {};
$('.results-heading').each(function() {
resultsSections[this.parentNode.id] = $(this).offset().top;
});
console.log(resultsSections);
return $scope.resultsSections = resultsSections;
}
$scope.getResultsSectionPosition();
</script>
Я реинициализирована локальный сайт, вызвав $scope.getResultsSectionPosition()
- новые сдвиги сохраняются в resultsSections
, но директива по-прежнему имеет начальное значение. Как заставить директиву использовать наиболее активные данные?
myApp.directive('navActive', function() {
return function(scope, element, attrs) {
var height = $(window).height(),
section = 0;
$(window).bind("scroll", function() {
var position = $(this).scrollTop();
for (section in scope.resultsSections) {
if (position + height - 50 >= scope.resultsSections[section]) {
$('li').removeClass('results-nav-active');
$('#nav_' + section).addClass('results-nav-active');
};
};
});
};
})
Я попытался использованияКонтактная scope.$watch('resultsSections", function(){...})
, но не увенчались успехом с этим.
и я пытался сделать что-то подобное (и просто пытался снова), но я получаю сообщение об ошибке 'Ошибка: Ошибка при интерполирования: ... '. Но если я прокомментирую 'scope: [resultsSections: '= sections'}', то он уйдет./ – EnigmaRM
Это странно, хорошо работает в скрипке, и я недавно использовал что-то подобное. Ошибка исчезает, когда вы ее комментируете, это должно быть нормально, но значение не будет обновляться. Однако у меня была эта ошибка или что-то подобное, когда я пытался передать функцию в атрибуте, вы пытались использовать переменную или функцию? – DotDotDot
Я передаю переменную 'resultsSections', которая фактически существует в' $ rootScope' – EnigmaRM