2014-07-13 55 views
2

我有什麼:AngularJS:NG-重複純文本

app.controller('items', function($scope){ 
    $scope.items = [ 
     {'id':1, 'name':'randomOne'}, 
     {'id':2, 'name':'whatEverName'} 
    ]; 
}); 

我想要什麼:

<input value="1,2"/> 

我瞭解ng-repeat,但它只能在html標籤中使用。有沒有辦法用AngularJS來實現這一點?

謝謝!

+0

'NG-repeat'只是一個指令,真的有那麼你會創建自己的,然後您可以連接到你的'',並有該指令生成基於'items'的元素的value屬性所以你的模板仍然很乾淨,並不是所有的控制器都需要額外的工作來獲取字符串。 – GillesC

+0

最終目的是什麼?爲什麼你需要連接值? –

+0

@Bonatoc爲了發送他們的整個形式 – Deptroco

回答

1

使用過濾器:

.filter('getIds', function() { 
    return function (items) { 
    return items && items.map(function (item) { 
     return item.id; 
    }).join(','); 
    } 
}) 

在您的HTML:

<input value="{{ items | getIds }}" /> 

例Plunker: http://plnkr.co/edit/ifHKzWqxtErQQVToMNsH?p=preview

1

如何:

$scope.value = _.pluck(items, 'id').join(','); 

<input value="value"> 
+0

看起來很不錯,但它崩潰的Javascript :( – Deptroco

+0

有沒有辦法做沒有underscore.js pluck – Deptroco

+0

我不知道下劃線/ lodash是如此有用我總是將它包含在我的應用程序中。 – chovy

0

您可以通過他們循環和使用value="{{ids}}",如:

$scope.ids = []; 
angular.forEach($scope.items, function(values,keys){ 
    $scope.ids.push(values.id); 
}); 
$scope.ids = $scope.ids.join(); 

fiddle