2017-11-06 4 views
-1

Ich bin triying, um Post auf einer API zu machen. Einer der Werte muss ich von einem Dropdown bekommen, das von einem json gefüllt wird. Dies ist der Teil des Codes, wo ich die Werte von Json erhalten:

function comboNation(){ 
    $http.get('app/componentes/comboProcedence.json') 
    .then(function(data){ 
     vm.nation = data.data; 
    //console.log(vm.nation); 
    }); 
} 

EDIT Und die Antwort sind nur zwei Werte. Dies ist die JSON-Daten:

[ 
    { 
    "Id": 1, 
    "value": "National" 
    }, 
    { 
    "Id": 2, 
    "value": "International" 
    } 
] 

die HTML-Ansicht:

<div class="col-md-4">Procedence 
    <br> 
    <button type="button" id="options2" aria-expanded="false" aria-haspopup="true" role="button" data-toggle="dropdown" class="btn btn-default dropdown-toggle"> 
    {{$ctrl.btnProcedence}} 
    <span class="caret"></span> 
    </button> 
    <ul class="dropdown-menu" id="list2"> 
    <li ng-repeat="alo in $ctrl.nation"> 
     <a href="#" ng-click="$ctrl.getWhereIs(alo)">{{alo.value}}</a> 
    </li> 
    </ul> 
</div> 

Jetzt, mit dem nächsten Code, ich bin den gewählten Wert bekommen:

vm.btnProcedence = "Select one"; 

vm.getWhereIs = function(f){ 
    vm.isThere = f.Id; 
    vm.btnProcedence = f.value; 
    //console.log(vm.isThere); 
} 

vm.idDoc = vm.isThere; 

Auf dem Konsolenprotokoll , drucke ich den ausgewählten Wert mit vm.isThere. Wie Sie sehen können, ist auf der ng-click verschachtelt. An diesem Punkt funktioniert es einwandfrei, aber wenn Sie versuchen, den Post zu erstellen, ist der ausgewählte Wert undefined.

Dies ist der Teil des Codes, wo ich den Posten mache:

vm.travelData = function() { 
    var data = { 
    Name: vm.name, 
    IdDocumentType: vm.idDoc, 
    }; 
    loadInfo(data); 
    console.log(data); 
}; 

function loadInfo(data) { 
    var arr = { 
    Name: vm.name, 
    IdDocumentType: vm.idDoc, 
    }; 
    postInfo.save(arr).$promise 
    .then(function(response) { 
     console.log(response); 
    }); 
} 

HTML-Ansicht:

<button type="button" class="btn btn-primary" ng-click="$ctrl.travelData()">Send Info</button> 

Jemand weiß, warum nicht definiert ist?

Die Antwort der API ist wahr, also gibt es keine Fehlermeldung.

Hoffe, du kannst mir helfen.

Vielen Dank im Voraus.

+0

Können Sie Ihre Frage mit den JSON-Daten Actualizar? –

+0

Veröffentlichen Sie Ihre ComboProcedence auch. – Priz

+0

Fertig! Ich setze meine JSON Daten –

Antwort

2

vm.idDoc = vm.isThere; muss innerhalb der vm.getWhereIs Funktion sein. Auch: vm.name ist undefined.

dieses Beispiel Siehe:

(function() { 
 
    var app = angular.module("app", []); 
 
    app.controller("Controller", ["$scope", function($scope) { 
 
    $scope.nation = [{ 
 
     "Id": 1, 
 
     "value": "National" 
 
     }, 
 
     { 
 
     "Id": 2, 
 
     "value": "International" 
 
     } 
 
    ]; 
 

 
    $scope.btnProcedence = "Select one"; 
 

 
    $scope.getWhereIs = function(f) { 
 
     $scope.isThere = f.Id; 
 
     $scope.btnProcedence = f.value; 
 
     $scope.idDoc = $scope.isThere; 
 
     $scope.name = "A name..."; 
 
    }; 
 

 
    $scope.travelData = function() { 
 
     var data = { 
 
     Name: $scope.name, 
 
     IdDocumentType: $scope.idDoc, 
 
     }; 
 
     loadInfo(data); 
 
    }; 
 

 
    function loadInfo(data) { 
 
     var arr = { 
 
     Name: $scope.name, 
 
     IdDocumentType: $scope.idDoc, 
 
     }; 
 
     console.log(arr); 
 

 
     /* postInfo.save(arr).$promise 
 
     .then(function(response) { 
 
      console.log(response); 
 
     }); 
 
     */ 
 
    } 
 
    }]); 
 
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div data-ng-app="app"> 
 
    <div data-ng-controller="Controller"> 
 
    <div class="col-md-4">Procedence 
 
     <br> 
 
     <button type="button" id="options2" aria-expanded="false" aria-haspopup="true" role="button" data-toggle="dropdown" class="btn btn-default dropdown-toggle"> 
 
    {{btnProcedence}} 
 
    <span class="caret"></span> 
 
    </button> 
 
     <ul class="dropdown-menu" id="list2"> 
 
     <li ng-repeat="alo in nation"> 
 
      <a href="#" data-ng-click="getWhereIs(alo)">{{alo.value}}</a> 
 
     </li> 
 
     </ul> 
 
    </div> 
 
    <button type="button" class="btn btn-primary" data-ng-click="travelData()">Send Info</button> 
 

 
    </div> 
 
</div>