2014-05-22 126 views
0

我在Angularjs新我正在開發一種購物車 的我已經和數組:angularjs輸入映射到數組元素

$scope.products = [ 
{id: '141', name: 'Apple', qty:0}, 
{id: '223', name: 'Orange', qty:0}, 
{id: '398', name: 'Banana', qty:0}]; 

在設計上的限制,我需要做的是這樣

<input type="text" ng-model="products[productID].qty"/> 

(我不能使用數組元素索引我知道它的工作原理。)

我也試圖與

ng-model="(p in products | filter: {id:'223'}).qty" 

但是我不能讓它工作

請你能幫助我嗎?

我會解釋我的購物車 讓我們想象一下,我需要一個表中的列大小:S,M,L,在排車型XL ,但也有在各種規模生產的,所以我會機型在每個單元格中都有一個輸入,但是有一些只在l和xl中,而在s和m中有一些。因此,我將有一個包含一些空單元格的表格。 我知道我可以有一個表作爲元數據,我可以定義列,行和映射,然後開發一個指令。我的想法是設計在HTML表,並分配給每個單元產品ID

+0

我不明白。你需要顯示'產品'數組中的一個項目?你如何知道要展示哪一個? – Mike

+0

是的,我必須從產品陣列映射一個項目到一個輸入,我需要映射產品的ID = 223 –

回答

1

基本上你將不得不從陣列中選擇id列,以便在你的指令/控制器寫這樣的事情:

$scope.getProduct = function(id) { 
    var product; 
    angular.forEach($scope.products, function(p) { 
    if(p.id === id) { 
     product = p; 
    } 
    }); 
    return product; 
}; 

然後:

$scope.selectedProduct = $scope.getProduct('223'); 
在HTML

然後:

<input ng-model="selectedProduct.qty"/> 

編輯:我不知道這是你在說什麼,但在這裏。 (你知道關於ngRepeat吧?):

<table> 
    <thead>... stuff</thead> 
    <tbody> 
    <tr ng-repeat="product in products"> 
     <td ng-bind="product.id"></td> 
     <!-- bind other stuff here --> 
     <td> 
     <input ng-model="product.qty"/> 
     </td> 
    </tr> 
    </tbody> 
</table> 
+0

+1擊敗我你有第一個答案:D – Dalorzo

+0

我會解釋我的購物車 –

+0

我已經編輯我的問題,並添加我的購物車的描述 –