Angular 1.6.1 ng - 以类型为前缀的选项值:

问题描述 投票:-1回答:1

这个问题让我抓狂。我试图使用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。

我做了一些阅读,人们建议在ng-options指令中使用“track by i.id”,这确实删除了所需的类型前缀,但也杀死了我预先选择的项目。我还读到我不应该关心如何在值字段中呈现值,因为我应该使用$ scope来读取所选项。在我的情况下,我不是通过角度提交我的表单,我只是使用角度进行一些验证。

这是我的小提琴:

https://jsfiddle.net/qhg63w2f/

angularjs ng-options
1个回答
0
投票
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>
© www.soinside.com 2019 - 2024. All rights reserved.