javascript - ng-options 和 ng-model 预选值

标签 javascript angularjs web

我正在尝试使用 ng-options 预选择值。这是什么

 <select ng-model="promocode.PRODUCT" ng-change="getSomething()" ng-options="product as product.NAME for product in products">

问题出在默认值选择上。我有与 ng-options 中相同的 promocode.PRODUCT 对象,但 Angular 将默认值设置为空。

我的错误在哪里?

最佳答案

假设您的产品具有某种 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 告诉 Angular 通过其 id 属性来比较数组项,而不是比较对象之间的相等性。

以下是有关 tracking / ng-options 的更多信息.

还有一个工作示例:

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>

更好的选择是选择正确的行,如下所示:

$scope.promocode = $scope.products[1];

这样您就不必复制任何数据。

关于javascript - ng-options 和 ng-model 预选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178911/

相关文章:

javascript - Bootstrap3 轮播 - 随机选择下一张幻灯片

JavaScript For 循环附加 4 次

javascript - 将文件路径作为参数传递到 Angular 路由器中

javascript - 如何在angularjs中显示错误消息(404)

java - GWT 实现管理控制台的最佳方式

javascript - JavaScript 函数错误

javascript - 处理浏览器中的后退按钮事件

javascript - 如何使用 Selenium 打开带有哈希的 URL?

javascript - 使用 Angular 设置 Express

web - 使用 Web Speech API 检测已知单词