2016-03-16 2 views
2

У меня есть небольшая проблема с выбором HTML с помощью AngularJS. Когда я делаю петицию к моему API, я получаю одно из значений как целое число, но когда я пытаюсь автозавершить выбор, я не могу правильно установить «значение».Autofill html select AngularJS

В этой картине вы можете себе то, что HTML получает и значения, которые я хочу установить

Example of code

Есть ли способ, чтобы бросить это значение?

Заранее спасибо :)

РЕДАКЦИИ:

Контроллера для получения данных о клиентах и ​​заполнить форму

.controller('CustomerDetailCtrl', ['Customer', '$scope', '$sessionStorage', '$stateParams', '$ionicPopup', function (Customer, $scope, $sessionStorage, $stateParams, $ionicPopup) { 
    if ($sessionStorage.auth) { 
     Customer.get({data: $stateParams.customerId + '_' + $sessionStorage.user_id}).$promise.then(function (data) { 
      if (data.response && $sessionStorage.role === 1) { 
       $scope.customer = data.response[0]; 

       if (data.history) { 
        $scope.histories = data.history; 
       } 
      } else { 
       console.log('Error de accesso...'); 
      } 
     }) 
    } 

    $scope.addTask = function (customer) { 
     alert('add task!'); 
    } 

    $scope.deleteTask = function (customer, history) { 
     alert('delete task!'); 
    } 
}]) 

Формы:

<label class="item item-input item-select"> 
    <div class="input-label"> 
     Cliente avisado? 
    </div> 
    <select name="informed" ng-model="customer.informed" required> 
     <option value="0">NO</option> 
     <option value="1">SI</option> 
    </select> 
</label> 

А вот картинка данных API: enter image description here

+2

Можете ли вы показать нам код, а не скриншот? –

+0

Отредактировано с дополнительной информацией –

ответ

0

Определить значение по умолчанию где-то в контроллере: $scope.customer.informed = "NO";

+0

Но если я это сделаю, а ответ API - 1 («SI»), форма не покажет правильное значение. –

+0

Дело в том, что вы должны установить значение по умолчанию для того, что является связыванием в 'ngModel'. Вы можете сами определить логику, проверив, какое значение должно быть в контроллере, но должно быть« SI »или« NO » –

+1

Ok , Я исправил это путем литья целочисленного значения в контроллере :) '$ scope.customer.informed = data.response [0] ['informed']. ToString();' Спасибо за вашу помощь! –

0

Я знаю, что вы уже получили ответ на это, но я хотел бы показать вам еще один потенциальный вариант, который не предполагает необходимости изменения данные из int в строку. Если вы определяете параметры своего выбора в своем контроллере (или в службе, если это будет использоваться в разных местах в вашем приложении), вы можете воспользоваться ng-options и его способностью использовать значение, отличное от строки.

Вот пример (очевидно, я жестко закодировал некоторые вещи и поместил все это в один модуль - не то, что вы сделали бы в реальном приложении).

JS:

angular.module('app', []) 
.controller('ctrl', function($scope){ 
    // select options (if these are common maybe store them in a service 
    // so you can share them in many controllers without duplicating the code) 
    $scope.selectOptions = [ 
    { 
     text: 'NO', 
     value: 0 
    }, 
    { 
     text: 'SI', 
     value: 1 
    }]; 
    // sample data 
    $scope.customer = { 
     address: 'San Rosendo 11', 
     date: '2016-03-16T16:19:13+0100', 
     email: 'Montes', 
     equipment: 'PC', 
     id: 262, 
     informed: 1, 
     lastName: 'Montes', 
     location: 'Tienda', 
     name: 'Juanma', 
     notes: '', 
     pass: 'no tiene', 
     phone: '900112233', 
     price: '0', 
     status: 'Pendiente', 
     tasks: 'dfsdf' 
    }; 
}); 

HTML:

<div ng-app='app' ng-controller='ctrl'> 
    <select ng-model='customer.informed' ng-options='option.value as option.text for option in selectOptions'></select> 
</div> 

jsFiddle

+0

Хорошо. Я ценю это, и я также попробую это решение :) –