2013-11-20 71 views
66

基本上,我试图填充选择框但将first_name列和last_name列的值连接起来。是否有可能连接Angular ng选项中的值

我想做的事情(不工作):

<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 subsidiary'。我能看到的唯一区别是我没有使用圆括号。尝试删除它们,看看它是否有效。 –

+0

另一种选择是在绑定数据之前使用连接的值创建一个名为full_name的属性。 –

+3

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

回答

121

的报价是非常重要的。它不适用双引号内的双引号或单引号内的单引号。

什么工作:

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

我添加了此答案,以从未答复的AngularJS问题列表中删除问题。 – boatcoder

+1

只是一个关于绊倒了我的东西的说明:引号很重要。它不适用双引号内的双引号或单引号内的单引号。 – Qaz

+1

dbl引号内部的绝对dbl引号不起作用,因为它们结束当前字符串并开始另一个字符串。你必须混合上面的引号。 – boatcoder

4

您可以使用此synthax将字符串:

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

下面的代码片断串连firstnamelastname

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>

注意括号并不需要,但它可能会提高可读性

相关问题