2015-08-24 2 views
0

У меня есть список Ionic в моем приложении и im, который динамически заполняет его элементами. Я пытаюсь также подключить прослушиватель нажатий/кликов, который просто предупредит элемент списка DOM. Im пытается избежать использования jQuery и сделать это просто угловым. Я попробовал следующее, и я не понимаю, почему функции click не срабатывают.Присоединение событий кликов к элементам ионического списка (с использованием Angular.Js)

HTML

<ul class="list"> 
    <li class="item" data-ng-repeat="c in contacts()" data-ng-click="selectedElem(selection)"> 
     {{ c.displayName }} 
    </li> 
</ul> 

Соответствующий код контроллера:

$scope.selectedElem = function(selection){ 
    alert(selection); 
}; 
+0

Как вы добавили свой контроллер? С конфигурацией ui-router или с 'ng-controller'? Если вы добавили его с помощью 'ng-controller', где вы добавили его в свой html? Пожалуйста, добавьте его в свой вопрос. Ваша проблема звучит как проблема с определением области охвата или вы пропустили добавление контроллера. – AWolf

ответ

4

Заменить data-ng-click="selectedElem(selection)" с data-ng-click="selectedElem(c)", c является, что конкретный элемент. Как вы делаете c in contacts().

var app = angular.module('myApp', []); 
 
    app.controller('MainCtrl', function($scope) { 
 
    $scope.contacts = function(){ 
 
    return [{displayName:"abc"}, {displayName:"def"}, {displayName:"igh"}]; 
 
    } 
 
    $scope.selectedElem = function(selection){ 
 
    alert(selection); 
 
    }; 
 
});
<script src="https://code.angularjs.org/1.4.3/angular.js"></script> 
 
<script src="https://code.angularjs.org/1.4.3/angular-route.js"></script> 
 
<body ng-app="myApp" ng-controller="MainCtrl"> 
 
<ul> 
 
    <li data-ng-repeat="c in contacts()" data-ng-click="selectedElem(c)"> 
 
     {{ c.displayName }} 
 
    </li> 
 
</ul> 
 
    
 
</body>

+0

Ну, я сделал ужасную ошибку и объявил функцию щелчка в другом контроллере (такие вещи случаются, когда вы слишком много кодируете за один день). Спасибо, что потрудились. – Vandervidi

+0

Что делать, если я хотел передать ссылку DOM элемента с щелчком? Как это делается? – Vandervidi

+1

Для этой цели вам необходимо написать собственную собственную директиву. С помощью директивы вы можете прикрепить любое поведение к определенному элементу. Если вы просмотрите эту [документацию] (https://docs.angularjs.org/guide/directive), вы можете узнать, как играть с элементами DOM. –

Смежные вопросы