0

私は次のことを行うために、コントローラから送信されたデータがプリロードされた入力とセレクタでフォームをロードします。いくつかのケースでは、これらは機能しますが、他のもの、特にセレクタでは機能しません。国、都市、カテゴリというセレクタがあります。これら3つのオプションセレクタは、私のサーバへの呼び出しによってロードされます。最初の2つのセレクタでモデルを選択する設定値

$scope.categorias = {}; 
$scope.ciudades = {}; 
$scope.paises = {}; 

$http({ method: 'GET', url: UrlCategorias.url, dataType: "json", contentType: "application/x-www-form-urlencoded" }) 
    .success(function(data) { 
     $scope.categorias = data.GetCategoriasResult; 
    }) 
    .error(function(response) { 
     console.log("Error inesperado"); 
    }) 
    .finally(function() { 

    }); 
$http({ method: 'GET', url: UrlCiudades.url, dataType: "json", contentType: "application/x-www-form-urlencoded" }) 
    .success(function(data) { 
     $scope.ciudades = data.GetCiudadesResult; 
    }) 
    .error(function(response) { 
     console.log("Error inesperado"); 
    }) 
    .finally(function() { 

    }); 
$http({ method: 'GET', url: UrlPaises.url, dataType: "json", contentType: "application/x-www-form-urlencoded" }) 
    .success(function(data) { 
     $scope.paises = data.GetPaisesResult; 
    }) 
    .error(function(response) { 
     console.log("Error inesperado"); 
    }) 
    .finally(function() { 

    }); 

Htmlの

<label class="item item-input item-select"> 
       <div class="input-label"> 
        Pais 
       </div> 
       <select name="selectPais" id="selectPais" ng-model="data.defaultPais" ng-options="pais.paisCodigo as pais.paisNombre for pais in paises track by pais.paisCodigo" ng-change="updateTheOtherDropdown(data.defaultPais)"> 
        <option value="">Seleccione país</option> 
       </select> 
      </label> 
      <label class="item item-input item-select"> 
       <div class="input-label"> 
        Ciudad 
       </div> 
       <select name="selectCiudad" id="selectCiudad" ng-disabled="!data.defaultPais" ng-model="data.defaultCiudad" ng-options="ciudad.ciuId as ciudad.ciuNombre for ciudad in ciudades_filter "> 
        <option value="">Seleccione ciudad</option> 
       </select> 
      </label> 
      <label class="item item-input item-select"> 
       <div class="input-label"> 
        Categoria 
       </div> 
       <select name="selectCategoria" id="selectCategoria" ng-model="data.defaultCategoria" ng-options="categoria.catNombre for categoria in categorias track by categoria.catCodigo"> 
        <option value="">Seleccione categoría</option> 
       </select> 
      </label> 

アイデアは、国を選択し、セレクタの都市をロードすることです。これはうまくいく。

私はあなたに以下を送っていますコントローラから:

$scope.data.defaultPais: sessionService.get('user_paisCodigo'), 
$scope.data.defaultCiudad : sessionService.get('user_ciudadId'), 
$scope.data.defaultCategoria : sessionService.get('user_categoriaCod') 

これらの値は、このすでにHTMLコードセレクタにロードされ、私が送られてくるが、セレクタ

<select name="selectPais" id="selectPais" ng-model="data.defaultPais" ng-options="pais.paisCodigo as pais.paisNombre for pais in paises track by pais.paisCodigo" ng-change="updateTheOtherDropdown(data.defaultPais)" class="ng-pristine ng-valid ng-not-empty ng-touched" style=""> 
<option value="" selected="selected">Seleccione país</option> 
<option label="Argentina" value="AR">Argentina</option> 
<option label="Chile" value="CL">Chile</option> 
<option label="Uruguay" value="UY">Uruguay</option></select> 

に表示されません彼のVALUEは、この場合CL、UYまたはARです。

答えて

0

paises場合は非同期に設定なっているか(別の国を選択するなど)いくつかのアクションの後、あなたはpaisesがロードされた$scope.data.defaultPais: sessionService.get('user_paisCodigo')後に設定する必要があります。

あなたはdefaultPais読み込まれるpaises前に設定した場合は、初期化時に設定しようとする値がまだng-optionsのリストにないので、​​は、そのng-modelに空の値を割り当てます。

だから、のようなもの:

$http({ method: 'GET', url: UrlPaises.url, dataType: "json", contentType: "application/x-www-form-urlencoded" }) 
    .success(function(data) { 
     $scope.paises = data.GetPaisesResult; 
     $scope.data.defaultPais = sessionService.get('user_paisCodigo'); 
    }) 
    .error(function(response) { 
     console.log("Error inesperado"); 
    }) 
    .finally(function() { 

    }); 
関連する問題