Ваш ng-init
работает не так, как вы ожидаете, потому что в вашем массиве нет данных при загрузке страницы.Вместо этого он должен завершить вызов $http
, прежде чем какие-либо данные станут доступны.Это просто означает, что вам нужно закончить свою работу, когда ваш звонок $http
возвращается (в .then
).
Ваш обновленный вызов AJAX может выглядеть следующим образом
$http({
method: 'GET',
url: 'http://xxx/api/ItemMaintenance/GetAllFilteredItems',
params: { PlaId: PlaId }
}).then(function successCallback(response) {
$scope.items = response.data;
//Initial the select box
$scope.itm = $scope.items[0];
//Get the details
getSelectedItemDetails();
}, function errorCallback(response) { });
function getSelectedItemDetails() {
$http({}) //whatever API endpoint to get the details
.then(function (response) {
// do something with the data. Maybe extend $scope.itm?
})
}
Двигаясь вперед, я не рекомендую использовать ng-init
.Вместо этого просто инициализируйте значение ваших переменных в вашем JavaScript.Из-за двусторонней привязки angular любые обновления значения из javascript сделают его HTML.