Angular 1.6.1 ng - значения параметров с префиксом типа: - PullRequest
0 голосов
/ 28 марта 2019

Эта проблема сводит меня с ума.Я пытаюсь предварительно выбрать значение с помощью 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, на которую влияет это раздражение.

Я немного прочитал, и люди предлагают использовать «track by i.id» в директиве ng-options, это убрало префикс типа какжелал, но и убил мой предварительно выбранный предмет.Я также прочитал, что мне не нужно заботиться о том, как значение отображается в поле значения, так как я должен использовать $ scope для чтения выбранного элемента.В моем случае я не отправляю свою форму через angular, я просто использую angular для некоторой проверки.

Вот моя скрипка:

https://jsfiddle.net/qhg63w2f/

1 Ответ

0 голосов
/ 28 марта 2019
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>
...