2016-05-18 10 views
0

Ich habe ein Array in meinem controller.js. Ich brauche, dass ein Benutzer den Eingabetextwert einfügt und wenn das Recht, eine Sache zeigen und wenn andere eine andere zeigen. Ich habe mehrere Instanzen, dann hatte ich geplant, mit ng-switch zu tun, aber lassen Sie mich nicht den Wert eines Variablenbereichs erhalten. Wie könnte ich es lösen?AngularJS ng-switch oder ähnlich arbeiten mit einem dynamischen Werten

INDEX.HTML

<body ng-app="formAdictos"> 
    <div ng-controller="MyController"> 
    <div ng-repeat="list in lista"></div> 
    <div ng-switch on="lis"> 
     <input type="text" ng-model="lis"> 
     <div ng-switch-when="{{lista[0]}}">S</div> 
     <div ng-switch-when={{lista[1]}}>Hola</div> 
     <div ng-switch-default>Texto para cuando no es ni A ni B</div> 
    </div> 
    </div> 
</body> 

controller.js

function MyController($scope, $http) { 
    $scope.items = []; 
    $scope.lista = []; 

    $http({method : 'GET',url : 'https://api.parse.com/1/classes/cupon', 
    headers: { 'X-Parse-Application-Id':'XXX', 
    'X-Parse-REST-API-Key':'XXX'}}) 
    .success(function(data, status) { 
     for(var i = 0; i < data.results.length; i++){ 
      cupo = data.results[i].cupon50; 
      $scope.lista[i] = cupo; 
     } 
     console.log($scope.lista); 
    }) 
    .error(function(data, status) { 
     alert("Error"); 
    }); 
} 
angular.module('formAdictos').controller('MyController', MyController);` 

Liste ein Array drei Werte enthält.

lista = [ „hallo“, „gut“, „schlecht“] das ist das Ergebnis nennen http

+0

verwenden. Bearbeiten Sie die Frage, um den JSON einzuschließen, der von Ihrem $ http-Aufruf zurückgegeben wurde. –

+0

$ scope.lista = ["hi", "gut", "schlecht"] das ist das Ergebnis –

Antwort

1

Nun, ich weiß nicht wirklich die Schalter Richtlinie und es scheint nicht so zu arbeiten, ich komme mit etwas anderem.

function MyController($scope, $http) { 
 
    $scope.items = []; 
 
    $scope.lista = []; 
 
    $scope.lis = ""; 
 
    $scope.lista = [{key:"hi", value:"S"}, {key:"good", value:"Hola"}] ; 
 
    $scope.isInList = false; 
 
    $scope.checkIsInList = function(lis){ 
 
    $scope.isInList = false; 
 
    for(var i =0; i < $scope.lista.length; i++){ 
 
     if($scope.lista[i].key === lis){ 
 
      $scope.isInList = true; 
 
      return; 
 
     } 
 
    } 
 
    } 
 
} 
 
angular.module('formAdictos', []).controller('MyController', MyController);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="formAdictos"> 
 
    <div ng-controller="MyController"> 
 
     <input type="text" ng-model="lis" ng-change="checkIsInList(lis)"> 
 
     <div ng-repeat="item in lista"> 
 
      <div ng-if="item.key == lis"><span ng-bind="item.value"></span></div> 
 
    </div> 
 
    <div ng-if="isInList==false">Texto para cuando no es ni A ni B</div> 
 
    lis : {{lis}} 
 
    </div> 
 
    
 
</div>

Diese Arbeit wie vorgesehen, habe ich den Standard mit einem boolean zu verwalten.

Wie Sie jedoch sehen können, müssen Sie Ihre Liste von Ihrem Server mit der Liste der passenden Werte in einer Liste von Objekten zusammenführen, damit es so funktioniert wie ich. Eine andere Möglichkeit wäre, 2 Arrays zu haben, in denen Übereinstimmungen den gleichen Index haben, und die $index von ng-repeat

+0

Danke mein Freund ... Es ist ähnlich wie ich es wollte. Ich könnte es benutzen. –