2016-09-17 2 views
0

Привет У меня есть JSon Как этоAngularjs Динамические текстовые поля и умножать два поля

[ 
    { 
    "id": 1, 
    "name": "Furniture & Fixture", 
    "choices": [ 
     { 
     "req_goods": "", 
     "qty": "10", 
     "rate": "", 
     "total": "" 
     } 
    ] 
    }, 
    { 
    "id": 2, 
    "name": "Miscellaneous Property", 
    "choices": [ 
     { 
     "req_goods": "", 
     "qty": "", 
     "rate": "", 
     "total": "" 
     } 
    ] 
    }, 
    { 
    "id": 3, 
    "name": "Office Equipment", 
    "choices": [ 
     { 
     "req_goods": "", 
     "qty": "", 
     "rate": "", 
     "total": "" 
     } 
    ] 
    } 
] 

здесь выбор мой динамических полей пользователь может добавить столько вариантов, сколько они хотят, моя добавить/удалить JS, как это

$scope.addNewChoice = function(id){ 
     $scope.capital_budgets[id].choices.push({}); 
    }; 
    $scope.removeChoice = function(parent_id,id) {  
     $scope.capital_budgets[parent_id].choices.splice(id,1); 
     }; 

мой HTML

<div ng-repeat="cb in capital_budgets"> 
    <div><b><% $index+1 %> <% cb.name %></b></div>     

    <div ng-repeat="choice in cb.choices">  
    <input type="text" ng-model="choice.req_goods">     
    <input type="text" ng-model="choice.qty"> 
    <input type="text" ng-model="choice.rate"> 
    <input type="text" ng-model="choice.total"> 

    <button type="button" ng-hide="$first" ng-click="removeChoice($parent.$index,$index)">-</button> 

    </div> 
    <button type="button" ng-click="addNewChoice($index)">+</button> 

</div> 

Теперь я хочу, чтобы вычислить общее количество (шт * ставка) из каждого добавленного выбора, когда они ставят qty и оценивают и помещают его в полное поле, пожалуйста, помогите

+0

Вы должны делать '{{}}' и не '<% %>' –

+0

Я думаю, что вы должны быть в состоянии inititate переменную как произведение 'qty' и' rate', как 'ng-init =" calculateTotal = choice.rate * choice.qty "', а затем назначить его 'ng-model =" calculateTotal "' для общего количества –

+0

'ng-init' будет запускаться только один раз при создании представления - он не будет обновляться при изменении' rate' или 'qty'. – Lex

ответ

2

Одним из способов достижения этого было бы создание метода в вашем контроллере для расчета, а затем просто вызвать его при изменении qty или rate.

контроллер:

$scope.updateTotal = function(choice) { 
    if(!choice.qty || !choice.rate) { 
     choice.total = 0; 
    } else { 
     choice.total = choice.qty * choice.rate; 
    } 
}; 

HTML:

<input type="text" ng-model="choice.qty" ng-change="updateTotal(choice)"> 
<input type="text" ng-model="choice.rate" ng-change="updateTotal(choice)"> 
+0

спасибо, я сделал это до того, что я сделал неправильно, был $ scope.choice.total = choice.qty * choice.rate; вместо select.total = choice.qty * choice.rate; – sanu

Смежные вопросы