2014-08-27 74 views
1

我想從AngularJS中的一個對象創建一個數組,用於ui-bootstrap的typeahead。 ('蝙蝠俠'),但我需要能夠結合幾個屬性來創建一個新的數組元素('蝙蝠俠(韋恩,布魯斯))。我可以從一個對象('蝙蝠俠'),但我需要能夠結合幾個屬性來創建一個新的數組元素('蝙蝠俠(韋恩,布魯斯))。我試過$scope.heroList = _.pluck($scope.heroes, 'name' + '(' + 'lname' + ', ' + 'fname' + ')');,但得到了所有的空值。採多個屬性

這是plunker

我需要一個最終的陣列看起來像這樣:

$scope.heroList = ['Batman (Wayne, Bruce]', 'Daredevil (Murdoch, Jack'), ... ]; 

這裏是我的javascript:

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

app.controller('MainController', function($scope){ 

    $scope.heroes = [ 
    { 
     id: 1, 
     name: 'Iron Man', 
     fname: 'Tony', 
     lname: 'Stark', 
     location: 'Stark Tower', 
     comic: 'Marvel' 
    }, 
    { 
     id: 2, 
     name: 'Batman', 
     fname: 'Bruce', 
     lname: 'Wayne', 
     location: 'Bat Cave', 
     comic: 'DC' 
    }, 
    { 
     id: 3, 
     name: 'Superman', 
     fname: 'Clark', 
     lname: 'Kent', 
     location: 'Metroplis', 
     comic: 'DC' 
    }, 
    { 
     id: 1, 
     name: 'Daredevil', 
     fname: 'Jack', 
     lname: 'Murdock', 
     location: 'Court Room', 
     comic: 'Marvel' 
    }, 
    { 
     id: 5, 
     name: 'Flash', 
     fname: 'Barry', 
     lname: 'Allen', 
     location: 'Speedline', 
     comic: 'DC' 
    }, 
    { 
     id: 6, 
     name: 'Hulk', 
     fname: 'Bruce', 
     lname: 'Banner', 
     location: 'Labratory', 
     comic: 'Marvel' 
    }, 
    { 
     id: 7, 
     name: 'Hawkeye', 
     fname: 'Clint', 
     lname: 'Barton', 
     location: 'Nest', 
     comic: 'Marvel' 
    }, 
    { 
     id: 8, 
     name: 'Thor', 
     fname: 'Donald', 
     lname: 'Blake', 
     location: 'Asgard', 
     comic: 'Marvel' 
    } 
    ]; 

    $scope.heroList = _.pluck($scope.heroes, 'name'); 
    //$scope.heroList = _.pluck($scope.heroes, 'name' + '(' + 'lname' + ', ' + 'fname' + ')'); 

}); // end MainController 
+0

我會使用'collect' /'map'來代替'pluck',因爲它更加規範,IMO。 – 2014-08-27 12:52:02

回答

3

可以使用回調方法。

使用

$scope.heroList = _.pluck($scope.heroes, function(elm){ 
    return elm.name + '(' + elm.lname + ', ' + elm.fname + ')'; 
}); 

DEMO

此外,我會建議你使用_.map()

$scope.heroList = _.map($scope.heroes, function(elm){ 
    return elm.name + '(' + elm.lname + ', ' + elm.fname + ')'; 
}); 

DEMO with map

+0

我對lodash相當陌生,不知道有回調......酷,雖然我不知道爲什麼使用_.map()更好,我改變了使用它...謝謝! – jgravois 2014-08-27 13:21:14

1

嘗試使用預輸入的 「預輸入輸入格式器」 artribute,你可以將回調傳遞給它f或格式化最終選定的值