在AngularJS中为依赖下拉菜单选择默认值[重复]

Posted

技术标签:

【中文标题】在AngularJS中为依赖下拉菜单选择默认值[重复]【英文标题】:Selecting a default value for dependant dropdowns in AngularJS [duplicate] 【发布时间】:2017-12-20 16:46:07 【问题描述】:

我需要为两个相关的下拉菜单预先选择默认值。因此,在页面加载时,下拉菜单应显示类似“Automative”的内容,并选择了“Two Wheelers”。 (并且不使用 selected 属性,默认值必须通过 $scope 加载) 以下是工作下拉菜单的 Plunkr 链接。

http://plnkr.co/edit/3Xrpb4jBziWNZE9JVfts?p=preview

<select class="home_search_select" name="d1" ng-model="selectedd1" ng-options="cat.category_id as cat.category_name for cat  in categorydata track by cat.category_id" id="d1">
   <option value="">Select Category</option>
</select>

<select class="home_search_select" name="d2" id="d2" ng-disabled="!selectedd1" ng-model="selectedd2" ng-options="subcat.ID as subcat.Name for subcat in ((categorydata|filter:'category_id':selectedd1)[0].Subcategory) track by subcat.ID">
  <option class="home_search_select" value="">Select Sub Category</option>
</select>

【问题讨论】:

【参考方案1】:

如下为 selected1 赋值

$scope.selectedd1= 
    "category_name": "Automotive",
    "category_id": "1",
    "Subcategory": [
      "Name": "Two Wheeler",
      "ID": "1"
    , 
      "Name": "Four Wheeler",
      "ID": "2"
    , 
      "Name": "Heavy Moving Vehicles",
      "ID": "3"
    , 
      "Name": "Automobile Related",
      "ID": "4"
    ]
  ;

在第二个下拉菜单中修改 ng-options

<select class="home_search_select" name="d2" id="d2"
    ng-disabled="!selectedd1" ng-model="selectedd2" 
    ng-options="subcat.ID as subcat.Name for subcat in selectedd1.Subcategory track by subcat.ID">
      <option class="home_search_select" value="">Select Sub Category</option>
 </select>

要监听下拉列表中的变化,请使用ng-change 指令

<select class="home_search_select" name="d1" 
ng-model="selectedd1" 
ng-change="homeChanged()"
ng-options="cat as cat.category_name for cat  in categorydata track by cat.category_id" id="d1">
  <option ng-value="">Select Category</option>
</select>

注意:ng-options 改为包含整个对象

Updated Plunker

【讨论】:

不工作,子类别下拉列表为空,更改时也已损坏。我需要它像原版一样工作。 只需将$scope.selectedd2 = $scope.selectedd1.Subcategory[0];(而不是$scope.selectedd2 = "1";)添加到@Aravind 的答案中,它应该可以工作 @Andriy 如果可行,请点赞 不工作了...请再次检查我的查询。我需要选择两个下拉菜单。就像最初出现的带有“Two Wheeler”的“汽车”或带有“鞋类”的“时尚”。当我再次更改主要类别时,它应该填充所有匹配值并选择“选择子类别”的子类别。跨度> @Aravind,它不起作用,如果你添加到你的代码中它应该可以工作 $scope.selectedd2 = $scope.selectedd1.Subcategory[0]; 这是固定的 plunker - plnkr.co/edit/MfThyBndm6zRLxmtqe7p?p=preview

以上是关于在AngularJS中为依赖下拉菜单选择默认值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jquery依赖下拉菜单选择

在 yii2 的 select2 下拉菜单中设置默认值

使用AngularJS在下拉列表中按选定值启用/禁用按钮

如何选择默认值下拉菜单

选择值为索引的时区下拉菜单

仅当它在 AngularJs 中有值时才需要下拉