Ayuda con AngularJS

JaimeHere

Hola a todos.

Problema
Estoy desarrollando una aplicación para llevar algunos registros.
En la aplicación hago uso de varias etiquetas <select>. He implementado un método muy sencillo que me permite evaluar cada select de manera individual, ya que si la opción seleccionada es "Otro", hace aparecer un input para escribir ahí la descripción.

El código del método es el siguiente.

//HTML
<select ng-model="obj" ng-options="arr.nombre as arr.nombre for arr in arreglo"></select>

<label class="item item-input" ng-if="cambioSelect(obj)">
        <span class="input-label">Nombre</span>
        <input type="text" placeholder="Nombre" ng-model="contacto.nombre" required>
</label>
//Javascript
$scope.cambioSelect = function(obj){
   if(obj == 'Otro'){
      return true;
   }
};

En base a ese método he condicionado el ng-if de cada input con el valor seleccioado en el Select.
Mi idea es que cuando el valor cambie de "Otro" a cualquier opción distinta, el input desaparezca y se quede en blanco.
Quiero hacerlo usando el mismo método cambioSelect y con las directivas de Angular. El input obviamente se oculta por la directiva ng-if (o ng-show) pero no puedo hacer que el valor del input se reinicie.

Hay alguna forma/directiva de enviar el input para limpiarlo y poder usar el mismo método para todos los Selects enviando únicamente el objeto como parámetro?

JaimeHere

Lo he solucionado.

El HTML ha quedado así.

//HTML
//COMBO BOX 1
        <select ng-model="obj" ng-change="changeCount(obj, newObj,'')" ng-options="arr.nombre as arr.nombre for arr in arreglo"></select>
    </label>
    <label class="item item-input" ng-show="changeCount(obj, newObj, 'Nombre')">
        <span class="input-label">Nombre</span>
        <input type="text" placeholder="Nombre" ng-model="newObj.nombre" required>
    </label>

//COMBO BOX 2
        <select ng-model="obj2" ng-change="changeCount(obj2, newObj,'')" ng-options="arr.nombre as arr.nombre for arr in arreglo2"></select>
    </label>
    <label class="item item-input" ng-show="changeCount(obj2, newObj, 'Cargo')">
        <span class="input-label">Cargo</span>
        <input type="text" placeholder="Nombre" ng-model="newObj.cargo" required>
    </label>

Y el Javascript así:

//Javascript
$scope.changeCount = function(obj, newObj, textID){
        if(obj == 'Otro'){
            return true;
        }else{
            switch(textID){
                case 'Nombre':
                    newObj.nombre="";
                    break;
                case 'Cargo':
                    newRecurso.cargo="";
                    break;
            }
        }
    };

De esta manera, con cada combo que agregue, sólo tengo que agregarlo al switch.

Usuarios habituales

  • JaimeHere