2015-10-14 2 views
0

Как установить значение по умолчанию на основе результатов ajax в ng-options?AngularJS ng-options Ajax default option option

<select ng-model="model.stuff" ng-options="o.name for o in options track by o.id"></select> 

Затем в моем контроллере у меня есть

$http.get("myurl").then(
    // On Success 
    function(response) { 
     $scope.options = response.data; 
    }, 
    // On Error 
    function(error) { 
     console.log("ERROR"); 
    } 
); 

Пример данные будут этот

[ 
    { 
    "id": 1, 
    "name": "Foo" 
    }, 
    { 
    "id": 2, 
    "name": "Bar" 
    } 
] 

Это прибудет срабатывают, когда другие вещи в моем контроллере включены, мой список выбора заполняет правильно , со всеми моими вариантами.

Но иногда мне нужно установить значение по умолчанию после загрузки данных ajax. Например, мне нужно загрузить id 1 из моего массива данных.

Это не значит для загрузки response.data[1] Это означает, что я должен искать внутри response.data и искать предмет, который имеет id: 1. Это работает с этим методом

function getArrayIndex(key, source){ 
    for (var i = 0; i < source.length; i++) { 
     if (source[i].id == key) { 
      return i; 
     } 
    } 
} 

Это скажет мне, что response.data[0] имеет id: 1, поэтому я хочу использовать это как моя по умолчанию выбрано значение, когда Ajax загружает мои данные.

Как я могу это достичь?

Я читал некоторые другие вопросы, но я не получил ничего работает ... Я попытался установить ng-init со значением id и со всей object, но не работает ...

ответ

0

Решение здесь чтобы добавить к контроллеру следующее.

$scope.model = { stuff: null }; 

$scope.$watch('options', function() { 
    if ($scope.options) { 
    $scope.model.stuff = $scope.options[0].name; 
    } 
}); 

Для соответствия вашему примеру установите $ scope.model как объект с ключом «stuff». Часы $ будут срабатывать при изменении параметров объекта $ scope. Оператор «if» гарантирует отсутствие ошибки, если «параметры» всегда установлены в нуль.

Дополнительную информацию см. На странице $scope documentation. $