2016-12-27 1 views
-1

У меня есть выпадающий показать ниже информацию карты и я хочу, чтобы показать is_default= true карты шоу топ другие карты ниже .. пожалуйста, помогите мнекак показать по умолчанию выпадающего значения шоу топа angularjs

<select ng-model="approvedinvoicesCtrl.currentcard.card_id"> 
    <option ng-value="item.card_id" ng-repeat="item in approvedinvoicesCtrl.current_job.cards ">{{item.brand +'  '+ item.last_digits}}</option> 
</select> 


{brand:"Visa", 
card_id:"card_19VHhAGdj8iWoXDURuRqNH28", 
last_digits : 123123, 
is_default:true}, 
{ 
brand:"Master", 
card_id:"card_19VHhAGdj8iWoXDURuRqNH28", 
last_digits : 123123, 
is_default:false} 
+0

вам нужно использовать ngSelected на опции элемента ... для более подробной информации смотрите ..... https://docs.angularjs.org/api/ng/directive/ngSelected –

+1

Я думаю нг -options - лучшая директива для селекторов: https://docs.angularjs.org/api/ng/directive/ngOptions –

+0

вы проверили мой ответ? –

ответ

0

Вы можете использовать OrderBy

<select ng-model="approvedinvoicesCtrl.currentcard.card_id><option ng-value="item.card_id" ng-repeat="item in approvedinvoicesCtrl.current_job.cards | orderBy:'is_default':false">{{item.brand +''+ item.last_digits}}</option></select> 

Здесь свойство 'is_default' сортируется в обратном порядке. Второй аргумент может быть любой функцией заказа, поэтому вы можете сортировать любое правило.

@link http://docs.angularjs.org/api/ng.filter:orderBy

+0

Несмотря на то, что это может решить проблему, это повышает накладные расходы за счет использования фильтров. Фильтры выполняются после каждого цикла дайджестов. –

+0

, если это приведет к циклу переваривания, почему необходимо угловое введение упорядоченного фильтра в раскрывающийся список. – digit

0

Вы должны использовать ng-init и ng-options для неплатежи ценности, как:

<select ng-init="somethingHere = options[1]" 
     ng-model="somethingHere" 
     ng-options="option for option in options"> 
</select> 

$scope.options = [ 
    'Brand1', 
    'Brand2', 
    'Brand3'   
]; 
1

Предложив вам с этим

<select> 
    <option ng-value="item.card_id" ng-repeat="item in dropdownval " 
    ng-selected=item._default > 
     {{item.brand +' '+ item.last_digits}}</option> 
    </select> 

LIVE DEMO

+0

Не могли бы вы объяснить, как это решает проблему? –

+0

вы можете проверить ** DEMO ** – Aravind

+0

демо не работает согласно требованию OP .. –

0

Вы можете предпочесть до - выбор карты (опция выбрана) вместо сортировки с использованием карты по умолчанию вверху.

Вы можете использовать ng-selected, используя значение по умолчанию, если в ng-model не выбрано значение, в противном случае оно выбирает значение в ng-модели.

<select ng-model="currentCard.selected" > 
    <option 
     ng-value="item.card_id" ng-repeat="item in cards" 
     ng-selected="(currentCard.selected==item.card_id) || (!currentCard.selected && item.is_default)"> 
     {{item.brand +'  '+ item.last_digits}} 
    </option> 
</select> 

или вы можете использовать подход ng-options. В этом последнем случае вы можете предварительно выбрать параметр, используя только значение ng-model.

<select 
    ng-model="currentCard.selected" 
    ng-options="item.card_id as item.brand+' '+item.last_digits for item in cards"> 
</select> 

Смотрите эту скрипку с обоих примерами:

https://jsfiddle.net/hdca55cg/

Второй показывает по умолчанию карты, если предварительно выбраны в модели.

1

Я предлагаю использовать ngOptions на элементе опции вместо ng-repeat.

Примечание:ngOptions обеспечивает средство для элемента «вариант», который должен быть использован вместо ngRepeat когда вы хотите выбрать модель, которая будет связана со значением non-string. Это связано с тем, что элемент option может привязываться только к строковым значениям в настоящее время. Для получения дополнительной информации вы можете проверить это link.

Работа демо с ngOptions:

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

 
myApp.controller('MyCtrl', function($scope) { 
 
    $scope.current_job = { 
 
     "cards": [ 
 
     { 
 
      brand:"Visa", 
 
      card_id:"card_19A", 
 
      last_digits : 123123, 
 
      is_default:true 
 
     }, { 
 
      brand:"Master", 
 
      card_id:"card_19B", 
 
      last_digits : 123123, 
 
      is_default:false 
 
     }   
 
     ] 
 
    }; 
 
    
 
    for (var i in $scope.current_job.cards) { 
 
    if ($scope.current_job.cards[i].is_default == true) { 
 
     $scope.topCard = $scope.current_job.cards[i].card_id; 
 
    } 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <select ng-options="item.card_id as item.brand+' '+item.last_digits for item in current_job.cards" 
 
    ng-model="topCard"> 
 
    </select> 
 
</div>

Работа демо с ngRepeat:

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

 
myApp.controller('MyCtrl', function($scope) { 
 
    $scope.current_job = { 
 
     "cards": [ 
 
     { 
 
      brand:"Visa", 
 
      card_id:"card_19A", 
 
      last_digits : 123123, 
 
      is_default:true 
 
     }, { 
 
      brand:"Master", 
 
      card_id:"card_19B", 
 
      last_digits : 123123, 
 
      is_default:false 
 
     }   
 
     ] 
 
    }; 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <select ng-model="currentcard.card_id"> 
 
    <option ng-value="item.card_id" ng-repeat="item in current_job.cards" ng-selected="item.is_default">{{item.brand +' '+ item.last_digits}}</option> 
 
    </select> 
 
</div>

+0

привет, когда я нажимаю ng-click, не получаю card_id ... ???? –

+0

card_id: "" charge_description: "cc" charge_type: «Оплата кредитной картой» __ proto__: Объект –

+0

, где вы использовали 'ng-click'?. Не пытайтесь изменить исходный пост. Я ответил в оригинальном посте. –

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