2016-12-20 7 views
2

У меня есть массив следующим образом:Making нг-динамические параметры в AngularJS

$scope.age = 2; 
$scope.people = [{name:"Sam",age:2},{name:"Pam",age:3},{name:"Ham",age:4}] 

Я хочу ng-options быть динамичными, т.е., Если возраст 2 затем показать все объекты людей в нг-вариантов. Если возраст равен 1, тогда покажите объект с именем «Сэм».

$scope.age может иметь значение либо 1 или 2.

Как я могу это сделать в AngularJS без написания другого блока отборных заявления?

+0

Какова логика «, если возраст 2, возвращение Пэм и Ветвь, если возраст равен 1, верните Сэм ' – devqon

+0

Вы можете проверить мой ответ ниже – Aruna

ответ

0

Вы могли бы привязать выбор к результату функции:

<select ng-options="person as person for person in getPersons()"> 
</select> 

Затем настройте свой объем следующим образом:

$scope.age = 2; 
$scope.people = [{name:"Sam",age:2},{name:"Pam",age:3},{name:"Ham",age:4}] 
$scope.getPersons = function() { 
    if ($scope.age = 1) 
     return $scope.people.filter(function(item) { 
      item.name == "Sam"; 
     }); 
    else 
     return $scope.people; 
}; 
0

директива ng-options может также анализировать filters, так что вы можете сделать что-то вроде этого:

<select ng-options="person as person for person in people | filter:{age:age}"> 
</select> 

См this jsfiddle

+0

Как это работает, посмотрите условия и какие объекты мне нужно отобразить в ng-options – CuriousMind

0

Вы можете использовать AngularJS filter, как показано ниже, с помощью специальной функции.

Работа образца: (типа 1 или 2 в текстовом поле ниже, чтобы проверить это)

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

 
app.controller('TestController', function($scope) { 
 
    $scope.age = 2; 
 
    $scope.people = [{name:"Sam",age:2},{name:"Pam",age:3},{name:"Ham",age:4}]; 
 
    $scope.filterPeople = function(person) { 
 
    return $scope.age === 2 || person.name === "Sam"; 
 
    }; 
 
}); 
 

 
angular.bootstrap(document, ['app']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-controller="TestController"> 
 
    Age: <input type="text" ng-model="age" /> 
 
    <select ng-options="person as person.name for person in people | filter:filterPeople" ng-model="selected"> 
 
    </select> 
 
</div>

 Смежные вопросы

  • Нет связанных вопросов^_^