2014-01-08 2 views
0

поведение У меня есть кнопка:Устранены AngularJs кнопка

<button data-ng-click="toggleElement(asset)" class="btn"><span class="text-center">Add To Cart</span></button> 

Я хотел бы скрыть эту кнопку, когда этот элемент будет добавить в список и показать
Отключено кнопку с названием «Добавлено в корзину»! !

Я пробовал:

<table class="table" data-ng-show="elements!=null && elements.length>0"> 
    <tr data-ng-repeat="element in elements">   
      <td> 
      <button data-ng-click="toggleElements(element)" ng-disabled="isDisabled" ng-model="isDisabled" class="btn"><span class="text-center">Add To Cart</span></button> 
    <td> <button data-ng-click="toggleAsset(elements[$index])" data-ng-disabled="added" class="btn">{{added ? 'Added' : 'Add'}}</button>    
</td> 
</tr> 

    </table> 

в мой контроллер у меня есть это:

$scope.toggleElements= function (element){ 
     ..... 
      $scope.added = true; 
} 

Кто-нибудь может мне помочь ...

+0

Что вы пробовали? Угловой документации должно быть более чем достаточно, чтобы ответить на этот вопрос дополнительным преимуществом обучения. –

ответ

2

Я думаю, что это будет работать для вас:

<button ng-click="toggleElement(asset)" ng-disabled="asset.added">{{asset.added ? 'Added' : 'Add'}}</button> 

Вам необходимо установить e имущество asset.added внутри toggleElement() способ.

+0

У меня есть asset.added undefined ... Как его добавить? Возможно, мне нужно поставить ng-model = "assets [$ index] .added" ?? – user880386

+0

Решено !!!! Спасибо – user880386

+0

Помните, что если вы находитесь внутри ng-repeat, вам не нужно использовать переменную $ index. Вы можете просто захватить текущий элемент, который повторяется и использовать его. –

0

это одно решение.

Посмотрите на plunk

<button ng-repeat="a in [0,1,2]" data-ng-click="added = !added" class="btn" ng-disabled="added"> 
    <span ng-show="!added" class="text-center">Add To Cart</span> 
    <span ng-show="added" class="text-center">Added To Cart</span> 
</button> 
0

Вы можете выполнить несколько команд в одной ng-click директивы. Просто отделите их ;, как и нормальное выражение javascript.

Например:

<button ng-click="doIt(); hide = true" ng-hide="hide"> 
    click me! 
</button> 
+1

Проблема с этим подходом заключается в том, что переменная hide присваивается текущей области. Если вы находитесь за пределами ng-repeat или другой директивы, которая создает изолированные области, вы можете пропустить эту переменную для других элементов. Это также усложняет модульное тестирование, вы добавляете часть логики в представление ... –

+0

Это будет определять переменную '$ scope.hide', которая будет использоваться всеми ресурсами, поэтому, если она используется в списке, она будет скрыть все кнопки, а не только одну. Хотя неясно из вопроса OP, я думаю, что можно с уверенностью предположить, что есть список активов – mnemosyn

+0

@mnemosyn не согласен с вами. Он не скроет всех кнопок. Проверьте мой plunkr. – gab

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