是否可以串联Angular ng-options中的值


72

基本上,我试图填充选择框,但将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>

4
我以前做过,而且确实可以。我的语法s.subsidiary.sid._value_ as s.subsidiary.subsidiary_no._value_ + ' :' + s.subsidiary.subsidiary_name._value_ for s in subsidiaries。我可以看到的唯一区别是我没有使用括号。尝试删除它们,看看是否可行。
乔纳森·帕卢博

另一个选择是在绑定数据之前使用连接的值创建一个名为full_name的属性。
乔纳森·帕卢博

3
好的,问题是双引号,需要单引号。
PatrickCurl

Answers:


133

引号很重要。它不能与双引号内的双引号或单引号内的单引号一起使用。

什么有效:

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

我添加了此答案,以从未回答的AngularJS问题列表中删除该问题。
boatcoder 2014年

1
只是给我一个绊脚石的注释:引号很重要。它不能与双引号内的双引号或单引号内的单引号一起使用。
加兹2015年

1
dbl引号中的绝对dbl引号不起作用,因为它们结束当前字符串并开始另一个字符串。您必须像上面那样混淆报价。
boatcoder 2015年

而不是像(b.first_name +'&nbsp;'+ b.last_name)这样使用。这会起作用。
Jeeva Jsb

对我来说,'b.id as (b.first_name + b.last_name) for b in buyers'一切都很顺利。
charliebrownie

4

您可以使用此synthax连接字符串:

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>

请注意,不需要括号,但可以提高可读性

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.