2016-06-12 2 views
1

メニューがあり、私のカテゴリへのループにはng-repeatを使用してください。このループにはリンクタグがあり、このリンクをクリックするとjsファイルで何かします。 しかし、javascriptのタグにアクセスできず、clickイベントをこの要素に追加することはできません。ここでng-repeat角度の要素にバインドするclickイベント

は私のNGリピートコードです:ここでは

<li class="has-children" ng-repeat="category in categories |filter:{ level: 1 } : true" ng-if="$index < 5"> 
    <a class="parent-link">{{category.categoryName}}</a> 
    <ul class="is-hidden"> 
     <li class="go-back"><a>{{category.categoryName}}</a></li> 
     <li ng-repeat="submenu in categories |filter:{ parentID: category.categoryID } : true"><a>{{submenu.categoryName}}</a></li> 
    </ul> 
</li> 

私のjsファイルは、(このコードは発生しません)です:

$(".parent-link").on("click", function(e) { 
    console.log("clicked"); 
    e.prenvetDefault() 
}); 
+1

Angular JSを使用している場合は、なぜ「ng-click」を使用しないのですか? – Rajesh

答えて

2

ng-clickを使用してください。要素の属性として使用できます。使用例:

HTML:

<div ng-click="changeWord()"> 
    {{word}} 
</div> 

コントローラー:

$scope.changeWord = function() { 
    $scope.word = 'I am changed'; 
} 

http://jsfiddle.net/ax6k3z1e/

1

考えられる理由は、あなたJavascriptがあることが考えられDOMの準備が整う前に実行されます。 ng-clickを使用する必要があります。アプリケーションでAngularJSを使用しているときは、Angularな方法で構築することをお勧めします。

0

NG-繰り返しを参照してくださいだけでなく、あなたの反復オブジェクトをバインドする傾向があります。以下はその例です。

<div ng-repeat='ele in elements'> 
<p ng-click='ShowAlert(ele)'>{{ele.name}}</p> 
</div> 

リンクされたコントローラに以下のコードを指定します。

$scope.ShowAlert=function(element){ 
alert(element.Name); 
} 
関連する問題