alternative de "getElementById" dans angularjs
Cochez cette PLNKR, j'ai une liste avec id myMenuList
, ce code d'suis accédant à script.js
pour afficher Numer of li
et UL width
par $scope.mml = angular.element(document.getElementById('myMenuList'));
.
Mais selon l'exigence que je ne devrais pas être accéder au contrôleur de ce genre. Est-il une alternative, nous pouvons le faire en gardant le même comportement?
CODE HTML
<div class="menucontainer left">
<ul id="myMenuList" ng-style="myStyle">
<li ng-repeat="item in items"> <a href="#">{{item.name}}</a> </li>
</ul>
</div>
JavaScript
$scope.mml = angular.element(document.getElementById('myMenuList'));
$timeout(function() {
$scope.numerofli = $scope.mml.find('li').length;
$scope.ulwidth = $scope.mml[0].clientWidth;
}, 1000);
Vous devez vous connecter pour publier un commentaire.
Démo Plunker
Mettre en œuvre une directive isolées à même d'encourager la modularité et la réutilisation:
Pour l'utiliser, initialiser un modèle de sortie à partir de l'intérieur de votre contrôleur de parent:
Lieu le
my-menu-list
attribut sur laul
élément, et de passer le modèle défini précédemment:Lorsque la directive s'exécute, il va remplir le modèle avec deux propriétés, que vous pouvez ensuite faire référence dans votre code HTML:
$parse
service pour atténuer les observateurs créé par l'isolat étendues.Utiliser uniquement
Utiliser la requête sélecteur de
Tandis que les autres réponses peuvent être correctes sur l'alternative de
getElementById
, votre code doit être réécrite sous l'angle de la voie. Voir ce plunker.Il devrait tenir compte de vos exigences, de toute façon.