Angular - 如何在开始时设置click事件

时间:2016-07-25 15:54:59

标签: javascript jquery angularjs

我想将click事件附加到所有li(list)元素(我已经订购了list-ul)。我正在使用角度控制器。奇怪的是它不起作用。这是我设置此事件的代码的一部分(在角度控制器内部):

$document.ready(function () {

    $scope.GetAllNotes();
    $scope.AddSortable();
    $scope.SetEvents(); //function call to function with click event for li
    Loader.Hide();        
    $window.focus();        
})

点击事件的功能:

$scope.SetEvents = function () {

    jQuery("#ulNotes li").click(function () {
        alert("You've clicked li!");
    });
}

我想如果这不起作用我仍然可以使用IIFE,但我相信必须采用有角度的方式来做到这一点。

2 个答案:

答案 0 :(得分:1)

你正在以jQuery的方式思考,但在角度思考方面做得与众不同。

要将简单的点击事件添加到列表元素,您只需添加ng-click指令(如评论中所述),如下所示:

<ul>
   <li ng-click="myFn()"></li>
   <li ng-click="myFn()"></li>
   <li ng-click="myFn()"></li>
</ul>

我的控制器你必须定义这样的东西:

app.controller('MyCtrl', function($scope) {
   $scope.myFn = function() {
});

答案 1 :(得分:1)

像Tushar所说,不要像Angular一样使用jQuery。

HTML:

<div ng-controller="SampleController">
    <ul ng-repeat="item in items"> <!-- assuming you're looping through a list' -->
        <li ng-click="clickFunction($index)">Click me!</li>
    </ul>
</div>

JS:

(function() {
'use strict';

angular
    .module('MyModule')
    .controller('SampleController', ControllerController);

ControllerController.$inject = ['$scope'];
function ControllerController($scope) {

    $scope.items = []; // your list of items

    $scope.clickFunction = function(index) {
        alert("You've clicked list item: " + index);
    }

}
})();