如何基于数据绑定而不是索引在Angular选择菜单中设置默认值

时间:2015-02-18 03:33:50

标签: angularjs

我想根据值而不是索引位置在选择菜单中设置默认项。例如,在下面的示例中,如果表单中的一个单选按钮显示" Oranges,"并且用户选择该单选按钮,是否可以使后续选择菜单中的默认选择为橙色?理想情况下,我宁愿不依赖选择菜单中的项目顺序。

<input type="radio" ng-model="selectionList.message" value="{{selection.type}}">

<!--Default selection below should be based on value selected above, regardless of order-->

<select ng-model="editProject.project" ng-options="opt as opt.type for opt in editProject.options">
</select>

有没有办法根据值而不是项目在选择菜单中的位置设置默认值?

2 个答案:

答案 0 :(得分:1)

radio input个文档,您可以添加ng-change挂钩

<input type="radio"
   ng-model=""
   value=""
   [name=""]
   [ng-change=""]
   ng-value="">

喜欢ng-change="editProject.project = selection.type"

答案 1 :(得分:1)

不完全确定你应该看起来是什么样的,或者说你正在拉的数据结构是什么样的。但是在你的ng-change中,你看起来正在使用一个与你试图操作的dataStructure不同的值。即。使用数组值返回对象中的嵌套值。看看下面的情况是否适用。我还做了一个plnkr.co,展示了它的一个例子。但这里有主要的片段

<input type="radio" ng-model="color" 
       value="{{radioColors.type[1]}}"   
       ng-change="match()">Orange<br>

//选择元素

  <select ng-model="selectValue" 
          ng-options="selectColor as selectColor.type for selectColor in selectColors"></select>

//这将进入你的控制器

$scope.match = function () {
    angular.forEach($scope.selectColors, function(value, key) {
      if(angular.equals(value.type, $scope.color)) {
        $scope.selectValue = $scope.selectColors[key]
      }

    });
}