0

如何在选择框中有一个默认选项...我尝试了几个选项但没有得到它

我尝试使用来自 json 的对象的值在我的 contralador 上创建一个范围:

像这样:

$scope.productSelect = $scope.item[0];

这是我的代码:

html:

<select id="variant" class="form-control variant-select"
        ng-model="productSelect"
        ng-options="product as product.formattedPrice+' - '+product.variantQualifierName for product in item[0] track by product.url">

JS:

(function (){

  'use strict';

  /**
   * @ngdoc function
   * @name variantApp.controller:AppCtrl
   * @description
   * # AppCtrl
   * Controller of the variantApp
   */

   var app = angular.module('variantApp.product.variantCtrl', []);

   app.controller('AppCtrl',
    [
      '$scope',
      'ProductVariant',
      '$log',
      function ($scope, ProductVariant, $log){

      $scope.item = [
        ProductVariant.getData()
      ];

     $scope.productSelect = $scope.item[0];

     $log.info($scope.productSelect);


   }]);

})(window, angular);
4

4 回答 4

1

你想要什么 ?要显示默认选项,请使用

<select id="variant" class="form-control variant-select"
        ng-model="productSelect"
        ng-options="product as product.formattedPrice+' - '+product.variantQualifierName for product in item[0] track by product.url">
<option value="">Default</option>
</select>

或仅显示默认选定值,然后使用:

ng-selected="EXPRESSION". 像

<select id="variant" class="form-control variant-select"
        ng-model="productSelect"
        ng-options="product as product.formattedPrice+' - '+product.variantQualifierName for product in item[0] track by product.url" ng-selected="$first">

显示选择的第一个值

于 2015-06-23T09:35:30.800 回答
1

谢谢您的帮助。

在萤火虫和你们每个人的帮助下,在特殊的skubski中,我已经解决了

我所做的改变:

<select id="variant" class="form-control variant-select"
        ng-model="productSelect"
        ng-options="product as product.formattedPrice+' - '+product.variantQualifierName for product in item[0] track by product.url">
</select>

为了这:

<select id="variant" class="form-control variant-select"
        ng-model="productSelect"
        ng-options="product as product.formattedPrice+' -     '+product.variantQualifierName for product in item track by product.url">
</select>

$scope.item = [
    ProductVariant.getData()
  ];

 $scope.productSelect = $scope.item[0];

为了这:

$scope.item = ProductVariant.getData();
$scope.productSelect =  $scope.item[0];

通过这些更改,我得到默认选择其中一种产品。

于 2015-06-23T10:39:04.260 回答
0

你有 ng-options="product as product.formattedPrice+' - '+product.variantQualifierName for product in item[0] track by product.url" 并且$scope.productSelect = $scope.item[0];

因此,您要么尝试从一个选项中进行选择,要么将您的 productSelected 初始化为相同的数组。

于 2015-06-23T09:30:36.583 回答
0
 $scope.item = [
    ProductVariant.getData()
  ];

 $scope.productSelect = $scope.item[0];

如果ProductVariant.getData()是一个承诺(异步调用),那么$scope.item[0];也可以在$scope.productSelect = $scope.item[0];被调用的阶段未定义。

尽管正如其他人提到的那样,还有一个奇怪的事实是您只重复项目列表中的第一个索引:product in item[0]

于 2015-06-23T09:35:32.730 回答