Soy nuevo en Angular JS. Tengo un código en el que quiero deshabilitar el "icono de eliminación" para la primera entrada. La primera entrada es "inglés".

La lista contiene los datos: inglés, chino, alemán, etc. El icono de eliminación se debe colocar para otros idiomas, pero para el inglés, que es la primera entrada, se debe deshabilitar.

A continuación se muestra el código html:

  <div class="row">
                <div class="form-group ">
                    <label class="form-group col-md-3">Language</label>
                    <label class="form-group col-md-4">Title</label>
                    <label class="form-group col-md-5"> Description</label>
                </div>
            </div> 
<div class="row">
   <div>
                        <div ng-repeat="Descriptions in mainsWithDescription ">
                            <div class="form-group col-md-2 top-Margin-language">
                                <label ng-model="Descriptions.Language">{{Descriptions.Language}}</label>
                            </div>
                            <div class="form-group col-md-4 top-Margin-Title">
                                <input type="text"  class="form-control input-md" name="titleValidate[]" ng-model="Descriptions.Title" />

                            </div>
                            <div class="form-group col-md-5">                             
                                <textarea maxlength="500" class="form-control input-md noresize" name="descriptionValidate[]" noresize ng-model="Descriptions.Description"></textarea>
                            </div>
                            <div class="form-group col-md-1">
                                <a style="cursor:pointer"><img ng-src="{{DeleteIcon_url}}" alt="delete image" ng-click="($index == !selectedDeleteIcon) || mainsWithDescription.splice($index,1)" ng-class="{'disabled': ($index == !selected)}" /> </a>
                            </div>
                        </div>
                    </div>
                </div>

¿Cómo arreglar esto? Gracias

0
venkat14 29 dic. 2016 a las 18:43

3 respuestas

La mejor respuesta

Si el inglés siempre es el primero, puede usar la variable de alcance $first que se crea automáticamente por ngRepeat.

<a style="cursor:pointer"><img ng-src="{{DeleteIcon_url}}" alt="delete image" ng-click="($index == !selectedDeleteIcon) || mainsWithDescription.splice($index,1)" ng-class="{'disabled': $first}" /> </a>

Otra opción es usar Descriptions.Language y compararlo con english.

<a style="cursor:pointer"><img ng-src="{{DeleteIcon_url}}" alt="delete image" ng-click="($index == !selectedDeleteIcon) || mainsWithDescription.splice($index,1)" ng-class="{'disabled': Descriptions.Language == 'English'}" /> </a>
1
Ron Dadon 29 dic. 2016 a las 15:47

Puedes mantener el inglés fuera del ciclo, colocándolo antes del ciclo

O

<div ng-repeat="Descriptions in mainsWithDescription ">
                            <div class="form-group col-md-2 top-Margin-language">
                                <label ng-model="Descriptions.Language">{{Descriptions.Language}}</label>
                            </div>
                            <div class="form-group col-md-4 top-Margin-Title">
                                <input type="text"  class="form-control input-md" name="titleValidate[]" ng-model="Descriptions.Title" />

                            </div>
                            <div class="form-group col-md-5">                             
                                <textarea maxlength="500" class="form-control input-md noresize" name="descriptionValidate[]" noresize ng-model="Descriptions.Description"></textarea>
                            </div>
                            <div class="form-group col-md-1">
                                <a style="cursor:pointer"><img ng-src="{{DeleteIcon_url}}" alt="delete image" ng-click="($index == !selectedDeleteIcon) || mainsWithDescription.splice($index,1)" ng-disabled="{{Descriptions.Language}}=='English'" ng-class="{'disabled': ($index == !selected)}" /> </a>
                            </div>
                        </div>
-1
Igino Boffa 29 dic. 2016 a las 15:48

La directiva ng-repeat tiene una propiedad llamada $ first que se evalúa como verdadera si es la primera fila. Úselo junto con ng-if ya que prefiero que no aparezca, así:

<a style="cursor:pointer" ng-if="!$first"><img ng-src="{{DeleteIcon_url}}" alt="delete image" ng-click="($index == !selectedDeleteIcon) || mainsWithDescription.splice($index,1)" ng-class="{'disabled': ($index == !selected)}" /> </a>

De lo contrario, deshabilítelo así:

<a style="cursor:pointer"><img ng-src="{{DeleteIcon_url}}" alt="delete image" ng-click="($index == !selectedDeleteIcon) || mainsWithDescription.splice($index,1)" ng-class="{'disabled': $first}" /> </a>
0
jbrown 29 dic. 2016 a las 15:57