2016-05-04 13 views
0

Я своего рода новый угловому так что это может быть глупый вопрос, но у меня есть этот фрагмент кода:angularjs нг-шоу не может скрыть

   <tr ng-repeat="ingr in recipe.ingredients"> 
       <div ng-show="ingr.edit"> 
        <td>{{ ingr.amount }}</td> 
        <!--td>{{ ingr.units }}</td> --> 
        <td>{{ingr.edit}}</td> //here I see ingr.edit toggle 
        <td>{{ ingr.description }}</td> 
       </div> 
       <td> 
        <button type="button" class="btn btn-default" ng-click="ingr.edit = !ingr.edit"> 
         <span class="glyphicon glyphicon glyphicon-edit"></span> 
        </button> 
       </td> 

       </tr> 

, но я не могу скрыть DIV. Я могу видеть в одной из ячеек таблицы, что ingr.edit правильно переключается, но все же div всегда отображается.

Может кто-нибудь помочь? благодаря

+0

Вы видите 'false' в своем' {{ingr.edit}} '? Можете ли вы попробовать с помощью 'ng-if' вместо этого? – floribon

+6

Недопустимый HTML. А '' могут содержать только те дети, которые являются «». – Lex

+0

добавьте ng-show в таблицу, а не в div, и используйте td в качестве оболочки для этой таблицы. –

ответ

1

А что-то вроде этого?

angular.module("app", []).controller("ctrl", function($scope){ 
 
    $scope.recipe = {ingredients:[{ 
 
    amount:10,edit:true,description:"foo"},//edit:true or it won't ever show in my sample 
 
    {amount:50,edit:true,description:"bar"}]}; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<table ng-app="app" ng-controller="ctrl"> 
 
<tr ng-repeat="ingr in recipe.ingredients" ng-show="ingr.edit"> 
 

 
    <td>{{ ingr.amount }}</td> 
 
    <!--td>{{ ingr.units }}</td> --> 
 
    <td>{{ingr.edit}}</td> //here I see ingr.edit toggle 
 
    <td>{{ ingr.description }}</td> 
 

 
    <td> 
 
    <button type="button" ng-click="ingr.edit = !ingr.edit"> 
 
     CLICK 
 
    </button> 
 
    </td> 
 

 
</tr>

Я переехал ng-show в <tr>, потому что <div> тег недопустим там так будет было полностью проигнорировано.

EDIT: см. @ Sag. Ответьте, чтобы увидеть, как заменить тег div на таблицу, чтобы он выполнялся.

+0

Единственная проблема с этим заключается в том, что после того, как 'ingr.edit' переключится на false, там это не способ переключить его обратно на истину. Предположительно, OP оставил много HTML, где будут показаны и скрыты некоторые типы элементов управления редактированием. Я думаю, что «ng-show» лучше всего переместить в отдельные элементы управления редактированием, но это всего лишь SWAG, поскольку исходный вопрос не дает четкого указания на общую желаемую функциональность. – Lex

+0

@ Lex да вот почему я ответил на это, я отвечаю на техническую часть того, что ищет OP. – Walfrat

1
<tr ng-repeat="ingr in recipe.ingredients"> 
      <td> 
      <table ng-show="ingr.edit"> 
       <td>{{ ingr.amount }}</td> 
       <!--td>{{ ingr.units }}</td> --> 
       <td>{{ingr.edit}}</td> //here I see ingr.edit toggle 
       <td>{{ ingr.description }}</td> 
      </table> 
      </td> 
      <td> 
       <button type="button" class="btn btn-default" ng-click="ingr.edit = !ingr.edit"> 
        <span class="glyphicon glyphicon glyphicon-edit"></span> 
       </button> 
      </td> 

      </tr> 

Включить таблицу не Див, вы не можете добавить DIV непосредственно на тр

+0

добавил комментарий уже см. Выше .. –