2016-05-01 18 views
1

Ich habe ein Problem mit Eingabefeldern in AngularJS. Was auch immer ich in einem schreibe, bekomme ich genau denselben Text in einem anderen (field_start = field_end). Was mache ich falsch? Stimmt etwas nicht mit ng-model?Eingabefelder, die dasselbe anzeigen

template.html

<form name="editForm" role="form" novalidate ng-submit="vm.save()"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true" 
      ng-click="vm.clear()">&times;</button> 
    <h4 class="modal-title" id="myPackLabel">Create offer</h4> 
    </div> 
    <div class="modal-body"> 
    <jhi-alert-error></jhi-alert-error> 
    <div class="form-group"> 
     <label class="control-label" for="field_start">Miejsce startowe</label> 
     <input type="text" class="form-control" name="field_start" id="field_start" 
      ng-model="vm.transitPointStart.city" placeholder="np. Warszawa" 
      /> 
    </div> 
    <div class="form-group"> 
     <label class="control-label" for="field_end">Miejsce docelowe</label> 
     <input type="text" class="form-control" name="field_end" id="field_end" 
      ng-model="vm.transitPointEnd.city" placeholder="np. Wrocław" 
      /> 
    </div> 
    </div> 
    <div class="modal-footer"> 
    <button type="button" class="btn btn-default" data-dismiss="modal" ng-click="vm.clear()"> 
     <span class="glyphicon glyphicon-ban-circle"></span>&nbsp;<span>Cancel</span> 
    </button> 
    <button type="submit" ng-disabled="editForm.$invalid || isSaving" class="btn btn-primary"> 
     <span class="glyphicon glyphicon-save"></span>&nbsp;<span>Save</span> 
    </button> 
    </div> 
</form> 

controller.js

(function() { 
    'use strict'; 

    angular 
    .module('myApp') 
    .controller('AddOfferDialogController', AddOfferDialogController); 

    AddOfferDialogController.$inject = ['$scope', '$stateParams', '$uibModalInstance', 'entity', 'ShipmentOffer', 'TransitPoint', 'PackageSlot']; 

    function AddOfferDialogController ($scope, $stateParams, $uibModalInstance, entity, ShipmentOffer, TransitPoint) { 
    var vm = this; 
    vm.shipmentOffer = entity; 
    vm.transitPointStart = entity; 
    vm.transitPointEnd = entity; 

    vm.save = function() { 
     vm.shipmentOffer.date = new Date(); 
     TransitPoint.save(vm.transitPointStart); 
     TransitPoint.save(vm.transitPointEnd); 
     ShipmentOffer.save(vm.shipmentOffer); 
     $uibModalInstance.close(); 
     vm.isSaving = false; 
    } 

    vm.clear = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 
    } 
})(); 
+0

Es ist keine Überraschung. Sie füllen in beiden Fällen die Eigenschaft entity.city. Sie sollten zwischen diesen Eigenschaften unterscheiden. Sie benötigen zwei Eigenschaften, um die Start- und Ankunftsstadt zu verwalten. – SayusiAndo

+0

Danke, ich bekomme es jetzt, aber ist es möglich, damit umzugehen, wenn ich zwei verschiedene entity.city in demselben Dialog brauche? Ich kann meine Datenbank momentan nicht ändern. – ulou

+0

Ich kenne Ihr Datenbankschema nicht, aber Sie haben die Freiheit, das Datenmodell, das Sie auf Client-Ebene haben, beliebig zu ändern. Danach müssen Sie darauf achten, dass es für Ihr Datenbankschema passt. – SayusiAndo

Antwort

2

Sie sind das gleiche Objekt in zwei Referenzen mit:

vm.transitPointStart = entity; 
vm.transitPointEnd = entity; 

vielleicht müssen Sie Erstelle eine Kl um verschiedene Objekte in Ihren Referenzen zu haben (es hängt von Ihren Anforderungen ab):

vm.transitPointStart = Object.assign({}, entity); 
vm.transitPointEnd = Object.assign({}, entity); 
+0

Das ist es, danke! – ulou

+0

mein Vergnügen ..: D –

+0

Ich würde mich über Ihr Votum freuen: D –