объединить модели

Я хочу объединить все данные, которые я ввожу, когда я запрашиваю адрес, чтобы отправить их в ng-model формы оси (расы 20 # 19 107), это моя форма, где я запрашиваю данные в отдельных входах, идея состоит в том, чтобы отправить их в один ng-model

<select style=" border:0px; background-color: white !important" ng-model="Direccion.Nomenclatura">
    <option ng-if="!direccion_nomenclatura">Seleccione</option>
    <option>Calle</option>
    <option selected>Carrera</option>
    <option>Transversal</option>
    <option>Diagonal</option>
    <option>Avenida</option>
    <option>Autopista</option>
</select>
<input type="text" placeholder="10" ng-model="Direccion.principal" name="principa" id="principa" class="imptsDir">
<p style="display: inline;">#</p>
<input type="text" placeholder="34" ng-model="Direccion.numero" name="numero" id="numero" class="imptsDir">
<p style="display: inline;">-</p>
<input type="text" placeholder="19" ng-model="Direccion.numero1" name="numero1" id="numero1" class="imptsDir">
<input type="text" placeholder="19" ng-model='Direccion.address' style="display: none !important;" name="address" id="address" class="imptsDir">
<label class="item item-input" style="    padding-left: 0px; border-top-width: 0px;">
    <span class="input-label">Info Adicional</span>
    <input type="text" Placeholder="Apto, casa , bloque etc" ng-model="Direccion.aditional_info" name="info" id="info" style="border-bottom: solid 1px grey !important; margin-right: 30px; padding: 0px;">
</label>

все, что я хочу отправить ng-model='Direccion.address'
, это часть контроллера, которую я пытаюсь назначить

$scope.Direccion = {}  
$scope.Direccion.city_id = ""  
$scope.Direccion.address = $scope.Direccion.Nomenclatura +" "+ $scope.Direccion.numero +" #  "+ $scope.Direccion.numero1 +" - "+$scope.Direccion.aditional_info;  
$scope.Direccion.aditional_info = "" 
0
задан 26.10.2016, 15:51
3 ответа

Твоя ошибка состоит в том, что ты поддерживаешь скрытыми всегда

<input type="text" placeholder="19" ng-model='Direccion.address' style="display: none !important;" name="address" id="address" class="imptsDir">

, Ты должен удалять style="display: none !important;" и это заменять

ng-show="verAddress"

В твоем драйвере что-либо подобное:

ФОРМИРУЕТ 1

 $scope.verAddress = false;
 $scope.enviar = function() {
     console.log($scope.Direccion);
     $scope.Direccion.address = $scope.Direccion.Nomenclatura + " " + $scope.Direccion.numero + " #  " + $scope.Direccion.numero1 + " - " + $scope.Direccion.aditional_info;
     $scope.verAddress = true;
 }

Оставаясь твой формуляр что-либо подобное:

<select style=" border:0px; background-color: white !important" ng-model="Direccion.Nomenclatura">
    <option ng-if="!direccion_nomenclatura">Seleccione</option>
    <option>Calle</option>
    <option selected>Carrera</option>
    <option>Transversal</option>
    <option>Diagonal</option>
    <option>Avenida</option>
    <option>Autopista</option>
</select>
<input type="text" placeholder="10" ng-model="Direccion.principal" name="principa" id="principa" class="imptsDir">
<p style="display: inline;">#</p>
<input type="text" placeholder="34" ng-model="Direccion.numero" name="numero" id="numero" class="imptsDir">
<p style="display: inline;">-</p>
<input type="text" placeholder="19" ng-model="Direccion.numero1" name="numero1" id="numero1" class="imptsDir">
<input type="text" placeholder="19" ng-model='Direccion.address' ng-show="verAddress" name="address" id="address" class="imptsDir">
<label class="item item-input" style="    padding-left: 0px; border-top-width: 0px;">
    <span class="input-label">Info Adicional</span>
    <input type="text" Placeholder="Apto, casa , bloque etc" ng-model="Direccion.aditional_info" name="info" id="info" style="border-bottom: solid 1px grey !important; margin-right: 30px; padding: 0px;">
</label>
<input button ng-click="enviar()" value="Enviar"></input>

Это выбор, если он состоит в том, что у тебя есть кнопка, которая делала бы действие, и ты хотел увидеть изменение, ЕСЛИ ты ХОЧЕШЬ увидеть изменение сразу как только были все завершенные поля, достаточно использовать tag ng-change="updateAddress()"

, ФОРМИРУЕТ 2

<select style=" border:0px; background-color: white !important" ng-change="updateAddress()" ng-model="Direccion.Nomenclatura">
    <option ng-if="!direccion_nomenclatura">Seleccione</option>
    <option>Calle</option>
    <option selected>Carrera</option>
    <option>Transversal</option>
    <option>Diagonal</option>
    <option>Avenida</option>
    <option>Autopista</option>
</select>
<input type="text" placeholder="10" ng-model="Direccion.principal" name="principa" id="principa" class="imptsDir">
<p style="display: inline;">#</p>
<input type="text" placeholder="34" ng-change="updateAddress()" ng-model="Direccion.numero" name="numero" id="numero" class="imptsDir">
<p style="display: inline;">-</p>
<input type="text" placeholder="19" ng-change="updateAddress()" ng-model="Direccion.numero1" name="numero1" id="numero1" class="imptsDir">
<input type="text" placeholder="19" ng-model='Direccion.address' ng-show="verAddress" name="address" id="address" class="imptsDir">
<label class="item item-input" style="    padding-left: 0px; border-top-width: 0px;">
    <span class="input-label">Info Adicional</span>
    <input type="text" ng-change="updateAddress()" Placeholder="Apto, casa , bloque etc" ng-model="Direccion.aditional_info" name="info" id="info" style="border-bottom: solid 1px grey !important; margin-right: 30px; padding: 0px;">
</label>

И в твоем драйвере

$scope.verAddress = false;
$scope.Direccion = {};
$scope.Direccion.Nomenclatura = "";
$scope.Direccion.numero = "";
$scope.Direccion.numero1 = "";
$scope.Direccion.aditional_info = "";
$scope.updateAddress= function() {
if ($scope.Direccion.Nomenclatura != "" && $scope.Direccion.numero != "" && $scope.Direccion.numero1 != "" && $scope.Direccion.aditional_info != "") {
    $scope.Direccion.address = $scope.Direccion.Nomenclatura + " " + $scope.Direccion.numero + " #  " + $scope.Direccion.numero1 + " - " + $scope.Direccion.aditional_info;
    $scope.verAddress = true;
}

EDIT

CODEPEN

EDIT 2

.controller('registrarDireccionCtrl', function($scope, $http, $q, Users, $ionicLoading, $ionicPopup, ionicToast, $rootScope, AUTH_EVENTS) {

  $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
  $scope.Direccion = {};
  $scope.Direccion.Nomenclatura = "";
  $scope.Direccion.numero = "";
  $scope.Direccion.numero1 = "";
  $scope.Direccion.aditional_info = "";
  $scope.Direccion.token = localStorage.getItem("token");

  $scope.updateAddress= function() {
      if ($scope.Direccion.Nomenclatura != "" && $scope.Direccion.numero != "" && $scope.Direccion.numero1 != "" && $scope.Direccion.aditional_info != "") {
      $scope.Direccion.address = $scope.Direccion.Nomenclatura + " " + $scope.Direccion.numero + " #  " + $scope.Direccion.numero1 + " - " + $scope.Direccion.aditional_info;
      }
  }

  var id = localStorage.getItem('user_id')
  var urlr = "http://abbie-core.herokuapp.com/api/users/" + id + "/addresses/new"

  $scope.registrarDireccion = function() {
      $scope.showLoadingProperTimes = function() {
          $ionicLoading.show({
              templateUrl: "templates/registro.html"
          });
      };
      $scope.showLoadingProperTimes();
      Users.registrarDireccion($scope.Direccion, urlr).then(function(argument) {

          console.log(argument)
          $ionicLoading.hide({});
          $scope.showToastRegDir();

      })
  };
  $scope.showToastRegDir = function() {
      ionicToast.show('Registro exitoso', 'bottom', false, 3000);
  };
 })
0
ответ дан 24.11.2019, 12:54
  • 1
    он продолжает посылать меня undefined undefined # undefined - undefined @sioesi – ingFR 26.10.2016, 16:16
  • 2
    Я сделал codepen и функционирует все добро. Ты можешь оставлять код твоего драйвера, чтобы видеть, что он не удается, я оставлю тебе соединение codepen. – sioesi 26.10.2016, 16:17
  • 3
    @ingFR уже издайте мой ответ, я оставил тебя codepen – sioesi 26.10.2016, 16:23
  • 4
    @ingFR ты Должен прилагать стоимость ВНУТРИ функции, так как ты признаешь этой всегда пустой стоимостью следовательно всегда твой concatenaci и # 243; n она будет пустой, твой драйвер должен бы быть таким: Я издаю – sioesi 26.10.2016, 16:25
  • 5
    он продолжает посылать ее null @sioesi – ingFR 26.10.2016, 17:23

Предполагая, что в тебе controller ты согласился на ng-model посредством $scope.Direccion, просто приложи данные, когда ты обработаешь их allГ - следующей формы:

$scope.Direccion.address = $scope.Direccion.address + $scope.Direccion.numero + $scope.Direccion.numero1 + $scope.Direccion.aditional_info;
0
ответ дан 24.11.2019, 12:54
  • 1
    уже я это попробовал и он посылает их " undefined undefined # undefined - undefined" @joriusR – ingFR 26.10.2016, 05:45
  • 2
    Добавь c и # 243; я говорю тебя controller, и как ты это обрабатываешь, чтобы видеть немного м и # 225; s и мочь помогать тебе – Jorius 26.10.2016, 05:46
  • 3
    Идея состояла в том, чтобы ты издал твой ответ в и # 241; adiendo выражение c и # 243; я говорю... – Jorius 26.10.2016, 05:55

это мой драйвер @sioesi

    .controller('registrarDireccionCtrl', function($scope, $http, $q, Users, $ionicLoading, $ionicPopup, ionicToast, $rootScope, AUTH_EVENTS) {

    $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
    $scope.Direccion = {}
    $scope.Direccion.city_id = ""
    $scope.Direccion.principal = "";
    $scope.Direccion.Nomenclatura = "";
    $scope.Direccion.numero = "";
    $scope.Direccion.numero1 = "";
    $scope.Direccion.aditional_info = "";
    $scope.Direccion.address="";
    $scope.Direccion.token = localStorage.getItem("token");

    var id = localStorage.getItem('user_id')
    var urlr = "http://abbie-core.herokuapp.com/api/users/" + id + "/addresses/new"

    $scope.registrarDireccion = function() {
         if ($scope.Direccion.principal != "" && $scope.Direccion.Nomenclatura != "" && $scope.Direccion.numero != "" && $scope.Direccion.numero1 != "" ) {
      $scope.Direccion.address = $scope.Direccion.Nomenclatura + " " + $scope.Direccion.principal + " # " + $scope.Direccion.numero + " - " + $scope.Direccion.numero1;
      }
        $scope.showLoadingProperTimes = function() {
            $ionicLoading.show({
                templateUrl: "templates/registro.html"
            });
        };
        $scope.showLoadingProperTimes();
        Users.registrarDireccion($scope.Direccion, urlr).then(function(argument) {

            console.log(argument)
            $ionicLoading.hide({});
            $scope.showToastRegDir();

        })
    };
    $scope.showToastRegDir = function() {
        ionicToast.show('Registro exitoso', 'bottom', false, 3000);
    };
})
0
ответ дан 24.11.2019, 12:54