将click事件绑定到ng-repeat angular中的元素

时间:2016-06-12 05:48:38

标签: javascript jquery angularjs

我有菜单并使用ng-repeat循环到我的类别,在这个循环中我有一个链接标记,我想在点击此链接时在js文件中执行某些操作。 但我无法在javascript中访问标记a并将click事件添加到此元素。

这是我的ng-repeat代码:

<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()
});

3 个答案:

答案 0 :(得分:2)

使用ng-click。它可以用作元素的属性。用法示例:

HTML:

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

控制器:

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

请参阅http://jsfiddle.net/ax6k3z1e/

答案 1 :(得分:1)

可能的原因可能是您在DOM准备好之前正在执行Javascript。在应用程序中使用AngularJS时,应该使用ng-click作为Angular方式进行构建。

答案 2 :(得分:0)

ng-Repeat也有绑定迭代对象的倾向。以下是相同的例子。

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

在链接的控制器中指定下面提到的代码。

$scope.ShowAlert=function(element){
alert(element.Name);
}