[英]ng-options and ng-model preselected value
I'm trying to preselect value with ng-options. 我正在尝试使用ng-options预先选择值。 Here's what
这是什么
<select ng-model="promocode.PRODUCT" ng-change="getSomething()" ng-options="product as product.NAME for product in products">
The problem is in selected by default value. 该问题在默认值中处于选中状态。 I have
promocode.PRODUCT
object the same as in ng-options, but angular set default value empty. 我有与ng-options相同的
promocode.PRODUCT
对象,但是角度设置默认值为空。
Where is my mistake? 我的错误在哪里?
Assuming your products have some kind of id
property, this should do the trick: 假设您的产品具有某种
id
属性,这应该可以解决问题:
<select ng-model="promocode.PRODUCT"
ng-change="getSomething()"
ng-options="product as product.NAME for product in products track by product.id">
track by product.id
tells angular to compare array items by their id
property, instead of comparing equality between objects. track by product.id
告诉angular通过其id
属性比较数组项,而不是比较对象之间的相等性。
Here's some more info on tracking / ng-options . 这是有关track / ng-options的更多信息。
And a working example: 还有一个工作示例:
var myApp = angular.module('myApp', []); myApp.controller("controller", function($scope) { $scope.products = [{ id: 1, name: 'FirstProduct' }, { id: 2, name: 'SecondProduct' }]; $scope.promocode = { product: { // Here I am using a placeholder product to illustrate that id: 2 // the select is identifying the correct row by it's `id`. } }; });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="myApp" ng-controller="controller"> <select ng-model="promocode.product" ng-change="getSomething()" ng-options="product as product.name for product in products track by product.id"> </select> <br/> {{promocode.product}} </div>
A better option would be to select the correct row, like this: 更好的选择是选择正确的行,如下所示:
$scope.promocode = $scope.products[1];
Then you won't have to duplicate any data. 然后,您将不必重复任何数据。
Assuming product
has id
property , You need to use select as label group by group for value in array track by trackexpr
, Read DOCs 假设
product
具有id
属性 ,则需要使用select as label group by group for value in array track by trackexpr
,读取DOC
<select ng-model="promocode.PRODUCT"
ng-change="getSomething()"
ng-options="product as product.NAME for product in products track by product.ID">
</select>
Try this.. 尝试这个..
<select ng-model="promocode.PRODUCT"
ng-change="getSomething()"
ng-options="product as product.NAME for product in products track by product.ID">
<option selected disabled>{{Your default value}}</option>
</select>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.