foreach, чтобы foreach массив в angularjs - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь обновить определенные данные массива, который отображается через ng-repeat.

Учитывая данные:

$scope.cartItems = [];
$scope.items = [{code: 'ABC', cash:'20.00', charge: '25.00'},
{code: 'DEF', cash:'10.00', charge: '15.00'},{code: 
'GHI',cash:'30.00', charge: '35.00'}];

, тогда у меня есть эта таблица

Item | Price | Action
ABC  | 20.00 | Add
DEF  | 10.00 | Add

ng-click="add(Item,Price)"
$scope.add = function(Item,Price){
var itemscart = {};
itemscart.code = Item;
itemscart.price = Price;

$scope.cartItems.push(itemscart)
}

и отображается как эта таблица html.

ng-repeat="cart in cartItems"
Item | price | bracket
ABC  | 20.00 | Cash //dropdown
DEF  | 10.00 | Cash //dropdown

И у меня есть этот выпадающий тег выбора со значением параметра;«Наличные» или «Заряд»

Если в выпадающем списке я выбрал заряд.Ожидаемый вывод html-таблицы должен быть:

Item | price | braket
ABC  | 25.00 | Charge //dropdown
DEF  | 15.00 | Charge //dropdown

Я пробовал:

if($scope.optionval == 'Charge'){
  var price = 0;
  $scope.cartItems.forEach(function(v){
    if(v.code == ($scope.items.forEach(function(c){c.code; price = 
c.charge; }))) 
      v.PRICE = price;
    console.log(v.PRICE) //gets the last row
    console.log(price) //null


  });
}

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

По моему мнению, вы могли бы использовать другой подход, например, использовать директивы ng-show или ng-if , чтобы получить результаты, которых вы пытаетесь достичь

Попробуйте добавить настраиваемое поле в $ scope, чтобы указать, какая цена должна быть показана, тогда у вас есть два варианта: изменить каждое поле или отдельно:

Отображение независимо:

app.js

$scope.items = [{code: 'ABC', cash:'20.00', charge: '25.00', displaying:'cash'},{...}

HTML

 <tr>
    <th>Item</th>
    <th>Price</th>
    <th></th>
 </tr>

<tr ng-repeat="cart in whatever">
   <td>{{cart.item}}</td>
   <td ng-show="cart.displaying=='cash'>{{cart.cash}}</td>
   <td ng-show="cart.displaying=='charge'>{{cart.charge}}</td>
   <td>{{cart.displaying}}</td>
   <td>*Dropdown to modify this specific 'displaying' field*</td>
</tr>

Каждое поле одновременно:

app.js

$scope.displayingitems = 'cash'

HTML

*Dropdown to modify this specific 'displaying' field*

 <tr>
    <th>Item</th>
    <th>Price</th>
    <th></th>
 </tr>

<tr ng-repeat="cart in whatever">
   <td>{{cart.item}}</td>
   <td ng-show="displayingitems=='cash'>{{cart.cash}}</td>
   <td ng-show="displayingitems =='charge'>{{cart.charge}}</td>
   <td>{{displayingitems}}</td>
   <td></td>
</tr>
0 голосов
/ 03 июля 2019

В соответствии с отображаемой и ожидаемой таблицей, вы можете попробовать что-то вроде:

  • При изменении CASH на CHARGE вызовите функцию ng-change в которые передают выбранный объект с выбранным 'braket'.
  • Затем при вызове функции вы можете фильтровать данные.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...