2016-07-01 3 views
0

Так что я искал ответа для этого, но я просто не мог найти ответ. Итак, у меня есть ng-repeat элементов, которые находятся в определенном классе = "list-items". Когда я нажимаю на каждый элемент в элементах, он должен выполнять функцию. Внутри каждого списка у меня есть кнопка удаления, которую я бы хотел удалить при нажатии.Два нг-клика на одном и том же div

Так некоторый код для справки:

<div ng-click="executeCallback($index)" class="list-items"> 
     <div class="item-info"> 
      <span>some info here</span> 
     </div> 
     <button ng-click="removeItem($index)">X</button> 
</div> 

Так что я сделал прямо сейчас, в моем CSS, я попытался с помощью позиции абсолютного на кнопку и г-индекса, как 10000, чтобы показать, что она больше чем, но когда я нажимаю кнопку removeItem, она по-прежнему вызывает функцию executeCallback. Я не хочу, чтобы он вызывал функцию executeCallback.

Есть ли способ, чтобы функция removeItem вызывалась только при нажатии кнопки удаления, а не родительского класса?

+0

Это происходит потому, что при нажатии на кнопку, это событие нажмите пузыри и огни нажмите на обработчик родителя тоже .. Вы должны остановить распространение этого события внутри 'RemoveItem()' –

ответ

3

Вы можете добавить несколько событий в одном нг щелчка.

<div ng-click="executeCallback($index)" class="list-items"> 
    <div class="item-info"> 
     <span>some info here</span> 
    </div> 
    <button ng-click="removeItem($index);$event.stopPropagation()">X</button> 

+0

Спасибо действительно помог! –

+0

Я бы, скорее всего, переместил '$ event.stopPropagation()' в функцию и заставил функцию принять '$ event' и передать ее в функцию из переднего конца для повторного использования кода, и я не чувствуйте, что html - это место для подобных вещей. –

0

Директивы, подобные ngClick и ngFocus, выставляют объект $event в рамках этого выражения. Объект является экземпляром jQuery Event Object, когда присутствует jQuery или аналогичный объект jqLite. Source

Вы можете использовать это прямо в шаблоне HTML, чтобы остановить его распространение, позвонив по телефону $event.stopPropagation(). Просто добавьте его на button и вы должны быть хорошо:

<button ng-click="removeItem($index);$event.stopPropagation()">X</button>