如何传回ng-repeat的特定变量?

时间:2014-01-28 17:51:04

标签: javascript angularjs

我有一个重复下拉的ng-repeat。持有下拉列表的每个重复div都有一个由控制器生成的唯一ID,我可以参考。

如何为特定下拉列表传回选定的选项?现在,如果选择了一个下拉列表,则所有下拉列表中selectedParameter.name的值都会更改。

<div id="{{ mergeVar.name }}" class="alert {{ selectedParamClass }}" ng-repeat="mergeVar in mergeVars">
    <b>merge value: </b> {{mergeVar.name}}
    <div class="dropdown pull-right">
      <button type="button" class="btn btn-sm btn-control dropdown-toggle" data-toggle="dropdown">
        {{selectedParameter.name || 'Match the Paramater'}}
        <span class="caret"></span>
      </button>
      <ul class="dropdown-menu">
        <li ng-repeat="param in availableParams">
          <a ng-click="selectParameter(parampass)">{{param.name}}</a>
        </li>
      </ul>
    </div> 
</div>

//controller.js

$scope.selectParameter = function(parampass) {
  console.log('parameter selected')
  $scope.selectedParameter = parampass
  $scope.selectedParamClass = 'alert-success'
}

1 个答案:

答案 0 :(得分:1)

这样做只会影响对象的一个​​实例:

$scope.selectParameter = function(parampass) {
  console.log('parameter selected')  
  parampass.selectedParamClass = 'alert-success';
}

您需要将属性添加到实例“row”对象。

您仍然可以存储所选对象:

$scope.selectedParameter = parampass

但根据我在代码中看到的内容,您可能要做的是在为所选对象选择项目时使用ng-class="selectedParamClass"