#angularjs #ng-options
#angularjs #ng-параметры
Вопрос:
Эта проблема сводит меня с ума. Я пытаюсь предварительно выбрать значение с помощью ng-options следующим образом:
<select name="listing_type_id" ng-model="listing_type_id"
ng-options="i.id as i.name for i in listingTypes">
</select>
Это работает, но мое значение в сгенерированном выпадающем списке имеет префикс «number:» — по какой-то непонятной причине.
Я знаю, что этого не происходит в более ранней версии Angular 1.x. Я использую 1.6.1, на который влияет это раздражение.
Я немного почитал, и люди предлагают использовать «отслеживать по i.id » в директиве ng-options это действительно удалило префикс type по желанию, но также уничтожило мой предварительно выбранный элемент. Я также читал, что меня не должно волновать, как отображается значение в поле value, поскольку я должен использовать $ scope для чтения выбранного элемента. В моем случае я не отправляю свою форму через angular, я просто использую angular для некоторой проверки.
Вот моя скрипка:
Комментарии:
1. Скрипка не используется
ng-options
.
Ответ №1:
Please pre defile your values in controller what you selected.
var app = angular.module('testApp', []);
app.controller('testController', ['$scope', function($scope) {
/* Pre defile values if you are not seleted than blank pass*/
$scope.myDropDown = 'two';
/* ng-options values pre define */
$scope.names = ["one", "two", "three"];
$scope.listing_type_id = 3;
$scope.listingTypes = [
{"id" : 1, "name" : "one"},
{"id" : 2, "name" : "two"},
{"id" : 3, "name" : "three"}
];
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script>
<div ng-app="testApp" ng-controller="testController as $ctrl">
<div>
Simple select dropdown :
<select ng-model="myDropDown">
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
</select>
</div>
<!-- ng-option to set values from controller and pre define selected values -->
<div>
ng-option :
<select ng-model="myDropDown" ng-options="item for item in names"></select>
</div>
<div ng-if="myDropDown == 'two' || myDropDown == 'three'">
<!-- Will be displayed only when you select 'two' or 'three' -->
<input type="text" ng-model="fname" />
</div>
<div>
Your Code ng-option :
<select name="listing_type_id" ng-model="listing_type_id" ng-options="i.id as i.name for i in listingTypes"></select>
</div>
</div>
Комментарии:
1. Я не вижу ничего другого в вашем решении, значения отображаются как «строка: …» и «число: ….»