2014-05-08 3 views
2

Если я хочу, чтобы установить значение выпадающего списка я попытался это:Как установить начальное значение для combobox в угловом?

controllercode:

$scope.streettypeMockData = [{ 
    name: 'Street', 
    value: 'Street' 
    }, { 
    name: 'Avenue' 
    }, { 
    name: 'Crescent' 
    }, { 
    name: 'Drive' 
    }, { 
    name: 'Road' 
    }, { 
    name: 'Highway' 
    }]; 

    var sel = "Street"; 
    var selectedValue = { 
    name: sel 
    }; 
    $scope.streetTypeSelected = selectedValue; 

Может кто-нибудь сказать мне, почему это не работает? Смотри также http://plnkr.co/edit/4ISL8A1cNGCtafsc0leX?p=preview

+0

'$ scope.streetTypeSelected = $ scope.streettypeMockData [0];' – AlwaysALearner

+0

@HanssieTeeuwen Посмотрите на мой ответ –

ответ

0

Код имеет несколько проблем:

  • ng-options выбрать имя, в то время как ng-model указывает на объект. Лучше использовать streetType as streetType.name for streetType in streettypeMockData для выбора всего объекта.
  • В этом случае начальное значение не будет выполнено, потому что Angular попытается сравнить объекты по ссылке; использование track by.

The полный <select> должно быть:

<select class="form-control" ng-model="streetTypeSelected" 
     ng-options="streetType as streetType.name for streetType in streettypeMockData track by streetType.name"> 

См forked plunker.

0

Вы можете просто использовать ng-init как этот

<select ng-init="streetTypeSelected = streettypeMockData[0]" class="form-control" ng-model="streetTypeSelected" ng-options="streetType.name for streetType in streettypeMockData"> 
    </select> 

Working Demo

Также вы можете сделать, как, как показано ниже

var app = angular.module('myApp', []); 
app.controller('MainCtrl', function ($scope) { 
    $scope.streettypeMockData = [ 
     {name: 'Street', value: 'Street'}, 
     {name: 'Avenue'}, 
     {name: 'Crescent'}, 
     {name: 'Drive'}, 
     {name: 'Road'}, 
     {name: 'Highway'} 
    ]; 
    $scope.streetTypeSelected = $scope.streettypeMockData[0]; 
}); 

Working Demo

Также посмотрите на эту

https://docs.angularjs.org/api/ng/directive/select

+0

как вы вычислить положение 3 в $ scope.streetTypeSelected = $ scope.streettypeMockData [3], а затем? В нем отсутствует вход «selectedvalue», который представляет собой строку «Улица» или «Диск» – Pindakaas

+0

Если вы хотите, чтобы улица была напечатана по умолчанию, вы должны использовать '$ scope.streetTypeSelected = $ scope.streettypeMockData [0]', если хотите Приводят использование '$ scope.streetTypeSelected = $ scope.streettypeMockData [3]' ... и т. Д. –

+0

Взгляните на это https://docs.angularjs.org/api/ng/directive/select –

Смежные вопросы