にDBからデータをプッシュした後、だから私は、DBからデータを取得し、ここでスクリプトは別のJavaScript関数を呼び出すと、配列
if(type == 'createSupplierInvoice'){
vm.data.organization = {};
vm.data.organization.selected = {
name: result.data.name,
id: result.data.organization_id
}
vm.data.ship_request_id = result.data.ship_request_id;
vm.data.terms = Number(result.data.payment_terms);
if(result.products.length > 0){
for(var i = 0;i<result.products.length;i++){
vm.products.push({
id: result.products[i].id,
product_id: result.products[i].ship_product_id,
code : result.products[i].ship_product_code,
description : result.products[i].ship_product_description,
request_quotation_detail_id : result.products[i].ship_request_quotation_detail_id,
qty : result.products[i].qty,
price : result.products[i].price,
total_price : result.products[i].total_price,
remarks : result.products[i].remarks,
temp_tax : 0,
temp_total: 0,
temp_subtotal: 0,
});
}
}
for(var d = 0; d < vm.products.length; d++){
calculateTotal(vm.products[d]);
console.log(vm.products[d]);
}
}
は私calculateTotal機能
である私のangularJSに配列にプッシュしている、このコードを持っていますfunction calculateTotal(items){
console.log(items);
var tax = parseFloat(vm.data.tax_percentage);
var qty = parseFloat(items.qty);
var price = parseFloat(items.price);
var temp_total = parseFloat(0), temp_subtotal = parseFloat(0);
temp_subtotal += (qty * price);
tax = parseFloat(temp_subtotal * (vm.data.tax_percentage * 1)/100);
temp_total += parseFloat(temp_subtotal + tax);
items.temp_tax = parseFloat(tax);
items.temp_subtotal = parseFloat(temp_subtotal);
items.temp_total = parseFloat(temp_total);
setTotal();
}
function setTotal(){
var calculated_tax = parseFloat(0), calculated_subtotal = parseFloat(0), calculated_total = parseFloat(0);
for(var i = 0; i < vm.products.length; i++){
calculated_tax += parseFloat(vm.products[i].temp_tax);
calculated_subtotal += parseFloat(vm.products[i].temp_subtotal);
calculated_total += parseFloat(vm.products[i].temp_total);
}
vm.data.total_tax = parseFloat(calculated_tax).toFixed(2);
vm.data.subtotal = parseFloat(calculated_subtotal).toFixed(2);
vm.data.grandtotal = parseFloat(calculated_total).toFixed(2);
}
私はconsole.log(items)をcalculateTotal関数の中に入れてコードをテストしましたが、決して起動しません。この関数は、dbからのデータによってプッシュされた後、配列ループで呼び出されていません。
ただし、console.log(vm.products [d])が動作しています。正しいデータが表示されます。私はこれらの2つの関数(calculateTotalとsetTotal)の中にすべてのコードを貼り付けてコピーすると、それも働いています。私はループ内で直接呼び出すとcalculateTotal関数が起動されない理由はわかりません。誰かが私を導くことができますか?
ありがとうございます。
コンソールですべてのエラー? – jcubic
いいえ、全く誤りはありません。すべて正常に動作しています – Vinfoster0701