Я'видел документацию по директиве Angular select здесь: http://docs.angularjs.org/api/ng.directive:select. Я не могу понять, как установить значение по умолчанию. Это сбивает с толку:
select as label for value in array
Вот объект:
{
"type": "select",
"name": "Service",
"value": "Service 3",
"values": [ "Service 1", "Service 2", "Service 3", "Service 4"]
}
html (работает):
<select><option ng-repeat="value in prop.values">{{value}}</option></select>
а затем я пытаюсь добавить атрибут ng-option внутри элемента select, чтобы установить prop.value
в качестве опции по умолчанию (не работает).
ng-options="(prop.value) for v in prop.values"
Что я делаю не так?
Итак, предположим, что объект находится в вашей области видимости:
<div ng-controller="MyCtrl">
<select ng-model="prop.value" ng-options="v for v in prop.values">
</select>
</div>
function MyCtrl($scope) {
$scope.prop = {
"type": "select",
"name": "Service",
"value": "Service 3",
"values": [ "Service 1", "Service 2", "Service 3", "Service 4"]
};
}
Рабочий Plunkr: http://plnkr.co/edit/wTRXZYEPrZJRizEltQ2g
В angular documentation for select* нет явного ответа на этот вопрос, но он там есть. Если вы посмотрите на `script.js, то увидите следующее:
function MyCntrl($scope) {
$scope.colors = [
{name:'black', shade:'dark'},
{name:'white', shade:'light'},
{name:'red', shade:'dark'},
{name:'blue', shade:'dark'},
{name:'yellow', shade:'light'}
];
$scope.color = $scope.colors[2]; // Default the color to red
}
Это html:
<select ng-model="color" ng-options="c.name for c in colors"></select>
Это кажется более очевидным способом установки выбранного значения по умолчанию в <select>
с ng-options
. Также он будет работать, если у вас разные метки/значения.
*
Это из версии Angular 1.2.7
Этот ответ более полезным, когда вы предъявляете данные из БД, вносить изменения, а затем Сохранить изменения.
<select ng-options="opt.id as opt.name for opt in users" ng-model="selectedUser"></select>
Проверьте вот пример:
<select name='partyid' id="partyid" class='span3'>
<option value=''>Select Party</option>
<option ng-repeat="item in partyName" value="{{item._id}}" ng-selected="obj.partyname == item.partyname">{{item.partyname}}
</option>
</select>
Если Ваш массив объектов являются сложными, как:
$scope.friends = [{ name: John , uuid: 1234}, {name: Joe, uuid, 5678}];
И ваша текущая модель была настроена на что-то вроде:
$scope.user.friend = {name:John, uuid: 1234};
Это позволило использовать след
функция на идентификатор UUID (или любое уникальное поле), пока НГ-модель="и пользователей.друг" и также имеет идентификатор UUID:
<select ng-model="user.friend"
ng-options="friend as friend.name for friend in friends track by friend.uuid">
</select>
<select id="itemDescFormId" name="itemDescFormId" size="1" ng-model="prop" ng-change="update()">
<option value="">English(EN)</option>
<option value="23">Corsican(CO)</option>
<option value="43">French(FR)</option>
<option value="16">German(GR)</option>
</выбрать>
Просто добавить параметр с пустым значением. Он будет работать.
Я боролся с этим за пару часов, так что я хотел бы добавить некоторые пояснения к ней, все примеры, обнаруженные здесь, относятся к случаям, когда данные будут загружены из сценария, не то, что исходит от службы или базы данных, поэтому я хотел бы предложить свой опыт для тех, кто страдает такой же проблемой как и я.
Обычно сохранить только ID нужной опции в базе данных, так что... давайте's шоу это
<и>обслуживание.Яш</а>
myApp.factory('Models', function($http) {
var models = {};
models.allModels = function(options) {
return $http.post(url_service, {options: options});
};
return models;
});
<и>контроллер.Яш</а>
myApp.controller('exampleController', function($scope, Models) {
$scope.mainObj={id_main: 1, id_model: 101};
$scope.selected_model = $scope.mainObj.id_model;
Models.allModels({}).success(function(data) {
$scope.models = data;
});
});
Наконец, частичное HTML-код <и>модель.HTML и л;/я и GT;
Model: <select ng-model="selected_model"
ng-options="model.id_model as model.name for model in models" ></select>
в основном я хотел подчеркнуть, что произведение " и<и>модель.id_model как модель.название модели в модели</а>" и в "<и>модель.id_model</а>" и использует идентификатор модели стоимости, так что вы можете матч с " и<и>mainObj.id_model</а>" у которых тоже в "<и>selected_model</а>" Ну, это просто ценность, а также на "<и>в качестве модели.имя</я и gt;" это метка для репитера, наконец-то "<и>модель в модели</а>" это просто очередной цикл, который мы все знаем про.
Надеюсь, что это помогает кто-то, и если это произойдет, пожалуйста, голосовать :Д
Более простой способ сделать это состоит в использовании данные-НГ-инит, например:
<select data-ng-init="somethingHere = options[0]" data-ng-model="somethingHere" data-ng-options="option.name for option in options"></select>
Основное различие здесь заключается в том, что вы должны включать сведения-НГ-модель
В НГ-модели наборы атрибутов выбранного варианта, а также позволяет трубе фильтр типа заказатьпо:orderModel.значение
index.html
<select ng-model="orderModel" ng-options="option.name for option in orderOptions"></select>
controllers.js
$scope.orderOptions = [
{"name":"Newest","value":"age"},
{"name":"Alphabetical","value":"name"}
];
$scope.orderModel = $scope.orderOptions[0];
Если кто-то убегает в значение по умолчанию иногда не заполняется на страницу в Хроме, т. е. 10/11, в Firefox -- попробуйте добавить этот атрибут для ввода выберите проверить поля для населенных переменной в HTML, например, так:
<input data-ng-model="vm.x" data-ng-if="vm.x !== '' && vm.x !== undefined && vm.x !== null" />
Очень просто, если вы не заботитесь об индексации ваши варианты с некоторой числовой идентификатор.
$объем.люди= [" в себе", "у тебя", "по мне"];
<выберите НГ-модель="и нанял" с НГ-параметры = ", который для тех, кто в люди" и></выбрать>
$объем.нанял = "по мне";
Удачи!!! Это's действительно легко!
Просто чтобы добавить вверх, я сделал что-то подобное.
<select class="form-control" data-ng-model="itemSelect" ng-change="selectedTemplate(itemSelect)" autofocus>
<option value="undefined" [selected]="itemSelect.Name == undefined" disabled="disabled">Select template...</option>
<option ng-repeat="itemSelect in templateLists" value="{{itemSelect.ID}}">{{itemSelect.Name}}</option></select>