Можно ли объединить значения в Angular ng-options

По сути, я пытаюсь заполнить поле выбора, но объединить значения из столбца first_name и столбца last_name.

Что я хочу сделать (не работает):

<select ng-model="buyers" ng-options="b.id as (b.first_name + " " + b.last_name) for b in buyers"></select>

Что работает:

<select ng-model="buyers" ng-options="b.id as b.first_name for b in buyers"></select>

person PatrickCurl    schedule 20.11.2013    source источник
comment
Я делал это раньше, и это работает. Мой синтаксис s.subsidiary.sid._value_ as s.subsidiary.subsidiary_no._value_ + ' :' + s.subsidiary.subsidiary_name._value_ for s in subsidiaries. Единственное отличие, которое я вижу, это то, что я не использовал круглые скобки. Попробуйте удалить их и посмотрите, работает ли это.   -  person Jonathan Palumbo    schedule 20.11.2013
comment
Другой вариант — создать свойство с именем full_name с конкатенированным значением перед привязкой данных.   -  person Jonathan Palumbo    schedule 20.11.2013
comment
хорошо, проблема была в двойных кавычках, нужны были одинарные.   -  person PatrickCurl    schedule 20.11.2013


Ответы (3)


Цитаты важны. Он не будет работать с двойными кавычками внутри двойных кавычек или одинарными кавычками внутри одинарных кавычек.

Что работает:

<select ng-model="buyers" ng-options='b.id as (b.first_name + " " + b.last_name) for b in buyers'></select>
person boatcoder    schedule 07.06.2014
comment
Я добавил этот ответ, чтобы удалить вопрос из списка оставшихся без ответа вопросов AngularJS. - person boatcoder; 07.06.2014
comment
Просто заметка о том, что меня сбило с толку: цитаты важны. Он не будет работать с двойными кавычками внутри двойных кавычек или одинарными кавычками внутри одинарных кавычек. - person Qaz; 11.06.2015
comment
Абсолютно двойные кавычки внутри двойных кавычек не работают, потому что они заканчивают текущую строку и начинают другую. Вы должны перепутать цитаты, как указано выше. - person boatcoder; 12.06.2015
comment
Вместо этого используйте как (b.first_name +''+ b.last_name). Это сработает. - person Jeeva J; 24.06.2015
comment
для меня 'b.id as (b.first_name + b.last_name) for b in buyers' отлично сработало. - person charliebrownie; 02.06.2017

Вы можете объединить строку, используя этот синтаксис:

ng-options="i.x + ' ' + i.y for i in items"

Следующий фрагмент объединяет firstname и lastname:

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

function MyCtrl($scope) {
  $scope.names = [{firstname: 'Jon', lastname: 'Snow'},
                  {firstname: 'Rob', lastname: 'Stark'},
                  {firstname: 'Ned', lastname: 'Stark'}];
}
<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="selected" ng-options="n.firstname + ' ' + n.lastname for n in names"></select>
  selected: {{selected}}
</div>

Обратите внимание, что круглые скобки необходимы, но они могут улучшить читабельность.

person Mistalis    schedule 24.04.2017

попробуйте это вместо

<select ng-model="buyers" ng-options="b as (b.first_name + " " + b.last_name) for b in buyers">
</select>
person user3423912    schedule 16.02.2021