设置值以选择模型

时间:2016-09-12 15:28:19

标签: angularjs data-binding ionic-framework angular-controller

我希望执行以下操作,使用从控制器发送的预加载数据的输入和选择器加载表单。在某些情况下,这些工作,但在其他情况下,尤其是在选择器中。我有一个名为Country,city和category的选择器。这三个选项选择器是通过调用我的服务器加载的。

private void startTask()
{
    waitEvent.WaitOne();
    waitEvent.Reset();
    finishEvent.Reset();

    run();
}

Html

$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() {

    });

前两个选择器中的想法是选择Country,然后选择加载选择器城市。这很有效。

我从控制器发送给您以下内容:

<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代码选择器中,我发送给他的是VALUE,在这种情况下是CL,UY或AR。

1 个答案:

答案 0 :(得分:0)

如果异步设置paises或在某些操作后设置(例如选择其他国家/地区),则需要在 $scope.data.defaultPais: sessionService.get('user_paisCodigo')加载后设置paises

如果您在加载 defaultPais之前设置paises <select name="selectPais" ...会为其ng-model分配一个空值,因为您的值尝试设置初始化不在ng-options列表中。

类似于:

$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() {

    });