toState
がui-sref
の値に一致するとli
のスタイルプロパティを変更するangularJS
指示があります。element.find( 'li')が結果と一致しません
何らかの理由により、element.find('li')
は私に空の結果をもたらします。
navbar.js
<app-navbar ui-view="navbar">
<div class="nb-main">
<ul id="list-nav" class="list-navbar">
<li ng-include="'svg/navbar-home.svg'" ui-sref="base.home"></li>
<li ng-include="'svg/navbar-discover.svg'" ui-sref="base.discover"></li>
<li ng-include="'svg/navbar-discover.svg'" ui-sref="base.discover"></li>
</ul>
<div class="nb-img line-navbar"></div>
</div>
</app-navbar>
_navbar.html
navbar.directive('appNavbar', [ function() {
return {
restrict: 'E',
link: function ($state, element) {
$state.$on("$stateChangeSuccess", function (event, toState) {
console.log(element.find('li')); // here is comming an empty value
angular.forEach(element.find('li'), function (a, i) {
// li css change stuff
});
});
}
};
}]);
私が間違って何をやっている:ここで私は私のコードを貼り付け、以下の? the documentationから
'link'メソッドの最初に' console.log(element) 'を実行できますか?最初は要素が基本的な 'DOMElement'なのではないかと思っていましたが、もっと多くのドキュメントを読んで(自分のコードを見て)、[jqLite](https://docs.angularjs.org /api/ng/function/angular.element)あなたが望むものとまったく同じオブジェクトです。 – Sam
次の応答を出力します: '[app-navbar.ng-scope] 0:app-navbar.ng-scope length:1 __proto__:Object [0]'。配列を通して 'childnodes'を見ると、' li.ng-scope'が見つかります。 – DevStarlight
本当にこれをする必要はありません(私は最初に答えを投稿しましたが、ドキュメントは私に矛盾していることに気づきました)。 'element.find( 'li')'を 'angular.element(element).find( 'li')'に置き換えてみてください。 – Sam