angularjs输入映射到数组元素

时间:2014-05-22 19:43:53

标签: angularjs angular-ngmodel

我是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设计表格并为每个单元格分配productID

1 个答案:

答案 0 :(得分: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>