Использование:
ng-options="selected_type as selected_type.Name for selected_type in types track by selected_type.Id"
// ^
// the object itself
... вместо:
ng-options="selected_type.Id as selected_type.Name for selected_type in types track by selected_type.Id"
// ^
// the object's ID
Затем, в вашей функции обратного вызова, replac е:
var typeID = this.selected_type;
// ^
// the object itself
... по:
var typeID = this.selected_type.Id;
// ^
// the object's ID
... и вы все готово!
Посмотрите на свою разветвленную JSFiddle here или просмотрите фрагмент ниже.
var app = angular.module("app", ["controllers"])
var controllers = angular.module("controllers",[]);
controllers.controller('myController', function($scope){
\t $scope.types = [{
Id: 1,
Name: 'Type1'
}, {
Id: 2,
Name: 'Type2'
}, {
Id: 3,
Name: 'Type3'
}];
$scope.GetValueTypeDropdown = function() {
\t var typeID = this.selected_type.Id;
\t $scope.the_type = $.grep($scope.types, function (selected_type){
\t return selected_type.Id == typeID;
})[0].Name;
console.log($scope.the_type);
return $scope.the_type;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="myController">
<form>
<select name="type" class="col-xs-12 dropdown-list"
ng-model="selected_type" class="col-xs-8"
ng-init="selected_type = types[0]"
ng-options="selected_type as selected_type.Name for selected_type in types track by selected_type.Id"
ng-change="GetValueTypeDropdown()">
</select>
</form>
</div>
</div>
'Id' свойство ваше значение, так' SELECTED_TYPE = типы [0] .Id' должны работать – tymeJV
Вы должны изменить 'нг-options' это:' ng- options = "type as type.Name для типа в типах track by type.Id" 'потому что ваша' ng-model' - это сам тип, а не идентификатор. См. Это [jsfiddle] (https://jsfiddle.net/596tzsh8/14/) – devqon