Angularjs: добавление пользовательских свойств или полей или вычислений в объект Json - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в angularjs.У меня есть служба отдыха, которая отправляет нижеуказанные данные saleItems при получении запроса.

saleItems = [
  {
    "id": 236,
    "variant": "Oval Holder",
    "mrp": "66.00"
  },
  {
    "id": 237,
    "variant": "Angle Holder",
    "mrp": "52.00"
  }
]

И мой шаблон выглядит так:

<table>
  <tr><th>Sale Invoice</th></tr>
  <tr>
    <th>No.</th>
    <th>Item.</th>
    <th>Quantity</th>
    <th>Rate</th>
    <th>Discount</th>
    <th>Discount Amount</th>
    <th>Total Amount</th>
  </tr>
  <tr ng-repeat="item in $ctrl.saleItems | filter:$ctrl.query | orderBy:$ctrl.orderProp">
    <td>{{$index + 1}}</a></td>
    <td>{{item.variant}}</td>
    <td><input type="text" value="{{item.sale_quantity}}"></td>
    <td class='amt'>{{item.mrp | currency : "₹" : 2}}</td>
    <td class='amt'><input type="text" placeholder="0.00" value="{{item.discount_percent}}"></td>
    <td class='amt' >{{item.total_amount | currency : "₹" : 2}}</td>
  </tr>
  <tr><td>{{sale_total_amount}}</td></tr>
</table>

Как видно из приведенного выше шаблонаЯ хотел бы иметь ввод для item.sale_quantity, item.discount_percent и поля readonly item.total_amount.

При каждом обновлении item.sale_quantity поле item.total_amount также должно обновлятьсявместе с sale_total_amount (сумма всех item.total_amount для каждой строки).

Кроме того, я хотел бы провести некоторую проверку в контроллере для item.sale_quantity.

Просто ищу некоторыепонимание.Нуб здесь.

1 Ответ

0 голосов
/ 27 сентября 2018

Используйте ng-change.ng-change ="expression" вычисляет выражение при каждом изменении значения данных, где используется ng-change.

Поэтому сначала инициализируйте item.total_amount и item.sale_quantity добавив ng-init="item.total_amount=0;item.sale_quantity =0" в первый тег <td>, а затем заменив

<td><input type="text" value="{{item.sale_quantity}}"></td> на

<td><input type="text" value="{{item.sale_quantity}}" ng-chnage="item.total_amount = item.sale_quantity * item.mrp"></td> 

.

Так что теперь, когда естьЭто изменение в item.sale_quantity выражение item.total_amount = item.sale_quantity * item.mrp будет оценено, и новое вычисленное значение будет присвоено в item.total_amount .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...