有没有办法在angularjs过滤器中显示过滤数组的属性?

时间:2014-12-01 09:21:01

标签: javascript angularjs angularjs-filter

我尝试只显示已过滤数组的一个特定属性。 有没有办法在我的控制器中不使用自定义方法显示属性? 我的意思是直接在视图中?

我的order.options数组:

[
    {value: '0', text: 'random'},
    {value: '1', text: 'names'},
    {value: '2', text: 'ages'}
]

我的观点:

<span>{{order.options | filter:order.value}}</span><!--  I need help here -->                          
<select ng-model="order.value">
    <option value="{{option.value}}" ng-repeat="option in order.options">{{option.text}}</option>
</select>

如果用户通过更改选择来排序列表,我想在某处显示所选值的文本(order.options[INDEX].text中的值)

例如,如果用户在选择中选择“随机”,则在选择之前的跨度中显示随机。

我必须在我的选项中使用不同的值和文本,因为我按照值排序选择旁边的列表(whis是列表项的属性)

2 个答案:

答案 0 :(得分:2)

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

app.controller('homeCtrl', function($scope) {

  $scope.order = {
    options:

      [{
      value: '0',
      text: 'random'
    }, {
      value: '1',
      text: 'names'
    }, {
      value: '2',
      text: 'ages'
    }]
  };
  
  //set default value for selectedOrder
  $scope.selectedOrder = $scope.order.options[0];


});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="app">
  <div ng-controller="homeCtrl">


    <span>{{selectedOrder.text}}</span>
    <!--  I need help here -->
    <select ng-model="selectedOrder" ng-options="option.text for option in order.options">

    </select>

  </div>
</div>

答案 1 :(得分:0)

为什么不直接使用所选选项作为模型值?

<select ng-model="selectedOrder">
    <option ng-value="option" ng-repeat="option in order.options">{{option.text}}</option>
</select>

然后,您可以独立使用 selectedOrder.value selectedOrder.text ,直接在视图中,无需任何控制器方法调用。