2016-04-06 2 views
1

私は、scope.courseが.jsファイルで定義されている角度でディレクティブとともに使用されるhtmlファイルを持っています。 ng-href="courses/{{course.url}}"次のコードで はうまく動作し、「コース/ myurl」ng-classでのisActiveメソッドの変数anglejs

のリンクを提供します。しかし、NG-クラスでのisActiveメソッドで変数に入れたときに、私はここからアクセスカントかのように、表示さdoesntの。

<li ng-class={active: isActive('/courses/{{course.url}}')}><a ng-href="courses/{{course.url}}">Overview</a></li> 

私のisActiveメソッドは、次のようになります。

scope.isActive = function(route){ 
    console.log(route); 
    return route === $location.path(); 
} 

しかし、それは私が私のisActiveメソッドにcourse.urlに置くことができますどのように他の何か

なし "/コース/" ログ?

+0

あなたのisActiveメソッドはブール値を返す必要があります。 isActiveメソッドコードを貼り付けることはできますか? –

+0

私のisActiveメソッドは次のとおりです: 'scope.isActive = function(route){ return route === $ location.path(); } ' – Jimmie

+0

はい、私は答えがfikkatraによって投稿されたと考えています。あなたのコンソールで=== $ location.path()がtrueに評価されているかどうかをチェックしましたか?厳密なequaltiy演算子を使用しています。矛盾があるかもしれません。試してみてください。 –

答えて

1

これを試してみてください:

var mod = angular.module('myapp', []); 
 
mod.controller('mycontroller', function($scope, $location) { 
 
    $scope.course = { 
 
    url: 'myurl' 
 
    }; 
 
    
 
    $scope.isActive = function(route){ 
 
    return route === '/courses/myurl'; 
 
    } 
 
});
.active a { 
 
    color: green; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myapp" ng-controller="mycontroller"> 
 
    <div ng-class="{'active': isActive('/courses/' + course.url) }"><a ng-href="courses/{{course.url}}">Overview</a> 
 
    </div> 
 
</div>

+0

まだ、メソッドがブール値を返さない場合、メソッドは機能しません。 ng-classはブール値で動作します。 –

+0

私はこの行を試しましたが、コンソールにエラーがありました: "angular.min.js:114エラー:[$ parse:ueoe] http://errors.angularjs.org/1.5.0/$parse/ueoe?p0 =%7B'active '%3A エラー(ネイティブ) http:// localhost:3000/libs/angular.min.js:6:416 " – Jimmie

+0

ng-class =の後に二重引用符を忘れてしまった。ワーキングコードスニペットで答えが更新されました。 – fikkatra

関連する問題