2016-01-13 1 views
1

Я пытаюсь сделать отзывчивый фиксированный заголовок таблицы. Заголовок таблицы будет нерабочим с таблицей; поэтому я запросил исходные заголовки таблиц и создал массив элементов, которые я хочу посмотреть на внутреннюю ширину всех них.Угловой 1 просмотр внутреннего ключевого значения массива элемента

Предостережение: Я знаю, что это быстро и грязно и не угловато, пожалуйста, несите меня.

Вопрос: Как я могу смотреть все индекс по listItemHooks[i] не только [0] индекса?

var listItemHooks = angular.element(document.querySelectorAll('.language-header-list-items-hook')); 
    $scope.$watch(function(){ 
    return listItemHooks[0].clientWidth 
    }, function(o,v){ 
    console.log(o,v); 
    }); 

ответ

2

Как насчет следующего?

$scope.$watchCollection(function() { 
    return [].slice.call(listItemHooks).map(function (listItem) { 
     return listItem.clientWidth; 
    }); 
}, function (newWidths, oldWidths) { 
    // Do something 
}); 

Наблюдатель будет вызываться, когда по меньшей мере, одно из изменений ширины (с последующей областью переварить, конечно).

+0

Так angular.element() возвращает объект, а не массив :(есть ли эквивалент карте? –

+1

D'oh! Да, см. Мое редактирование. – gustavohenke

+0

Спасибо за это. –

0

Что вы наблюдаете за $, должно быть в $ scope, а затем вам нужно сделать глубокие $ watch.

$scope.listItemHooks = angular.element(document.querySelectorAll('.language-header-list-items-hook')); 

$scope.$watch('listItemHooks', function(o,v){ 
    console.log(o,v); 
}, true); 

true как последний аргумент в функции $watch делает его проверить объект равенства, и это становится дорогим. Вы также можете посмотреть на $watchCollection, который, я думаю, не работает здесь, но хорошо знать.

+1

Спасибо за внимание! Я предлагаю вам посмотреть на gustavohenke ответ, это элегантно! –

+1

спасибо! да, его ответ хороший, $ watchCollection определенно лучше, чем глубокие часы. –

Смежные вопросы