Angular の新機能。ページ間でナビゲーション ヘッダー バーを共有できるように、再利用可能なディレクティブを作成しようとしています。それぞれの個別の html ページは、現在のページまたはアクティブなページが何であるかを指定できる必要があるため、そのページを区別する css プロパティが適用されます。
このナビゲーション バーを使用する各 HTML ページが ActivePage の「プロパティ」を設定するだけで済むように、すべてのロジックをディレクティブにまとめる必要があります。
ただし、テンプレートで条件付き ng-class を取得して CSS クラスを適用できないようです。誰かが私の問題を見つけるのを手伝ってくれますか?
プランカーの例: http://plnkr.co/edit/JTI8wLOhN5xWeDdD9i2l
使用中で:
<section ng-app="NavBarApp" ng-controller="NavBarCtrl">
<nav-Bar ActivePage="{{Pages.Navigation.Page2}}"></nav-Bar>
</section>
Javascript:
var Pages = {};
Pages.Navigation = {};
Pages.Navigation.Page1 = {
Name: "Page 1",
BaseLink: "Page1.html"
};
Pages.Navigation.Page2 = {
Name: "Page 2",
BaseLink: "Page2.html"
};
Pages.Navigation.Page3 = {
Name: "Page 3",
BaseLink: "Page3.html"
};
var NavBarApp = angular.module('NavBarApp', []);
NavBarApp.controller('NavBarCtrl', function NavBarCtrl($scope){
$scope.Pages = {};
$scope.Pages.Navigation = Pages.Navigation;
});
NavBarApp.directive('navBar', function(){
return {
restrict: 'E',
replace: true,
scope: {
strActivePage: "@ActivePage"
},
controller: function($scope){
$scope.aryPagesList = [];
for(var strProp in Pages.Navigation){
$scope.aryPagesList.push(Pages.Navigation[strProp]);
}
},
templateUrl: 'NavBarTemplate.html'
};
});
テンプレート:
<div id="NavBar" class="navigation">
<ul>
<li ng-repeat="oCurPage in aryPagesList">
<a id="{{oCurPage.Name}}" ng-class="{active: oCurPage.Name==strActivePage}" href="{{oCurPage.BaseLink}}">{{oCurPage.Name}}</a>
</li>
</ul>
</div>
前もって感謝します!