Javascript 带计算列的Angularjs x-可编辑表格
在角度x-可编辑内联表格中工作。我希望有额外的列,这些列是基于其他列计算的值 用户添加行后,应根据索引将其更新为本地作用域数组。但是,我无法查看计算列Javascript 带计算列的Angularjs x-可编辑表格,javascript,angularjs,x-editable,Javascript,Angularjs,X Editable,在角度x-可编辑内联表格中工作。我希望有额外的列,这些列是基于其他列计算的值 用户添加行后,应根据索引将其更新为本地作用域数组。但是,我无法查看计算列MRPVATAmount,COSTVATAmount值。它显示仅绑定到x-可编辑字段的数据 如何在保存事件之前,即在$scope.savePurchaseItem中获取计算值,如COSTVATAmountonbeforesave事件? 光盘% 拯救 批处理 数量 自由的 包裹 MRP Abt 物料需求计划 成本 自由圆盘 增值税% 光盘% 数量
MRPVATAmount,COSTVATAmount
值。它显示仅绑定到x-可编辑
字段的数据
如何在保存事件之前,即在$scope.savePurchaseItem中获取计算值,如COSTVATAmount
onbeforesave事件?
光盘%
拯救
批处理
数量
自由的
包裹
MRP Abt
物料需求计划
成本
自由圆盘
增值税%
光盘%
数量
增值税金额
编辑
德尔
{{order.BatchNo | |'''}}
{{订单数量| | 1}}
{{order.FreeQty | | 0}
{{订单.打包| | 1}}
{{calculateMRPAbt(rowform.$data)}
{order.MRP | |'''}
{{订单.成本| |'''}}
{{order.freedic | |'''}}
{{showSelectedVAT(订单)}
{{order.DiscountPercentage | |'''}}
{{calculateMRPVATAmount(行格式$data)}
{{calculateCostVATAmount(rowform.$data)}
添加行
App.JS
var app = angular.module("app", ["ui.bootstrap", "xeditable", "ngMockE2E"]);
app.run(function(editableOptions) {
editableOptions.theme = 'bs3';
});
app.controller('Ctrl', function($scope, $filter, $http) {
$scope.taxes = [{
value: 5.5,
text: '5.5'
}, {
value: 4,
text: '4'
}];
$scope.purchaseOrders = [];
$scope.purchaseId = 0;
$scope.selectedVal = 0;
$scope.purchaseHeader = {};
$scope.productMaster = [];
$scope.inserted = {};
$scope.savePurchase = function() {
$scope.purchaseHeader.PurchaseItems = $scope.purchaseOrders;
}
$scope.savePurchaseItem = function(data, id, rowform, idx) {
//data doesnot have MRPVATAmount, COSTVATAmount property. It has only editable data
}
$scope.checkProductName = function(data, rowform) {
debugger;
}
$scope.setDiscPercentToAll = function(data, tableform) {
for (var i = 0; i < tableform.$editables.length; i++) {
if (tableform.$editables[i].name === 'user.status') {
tableform.$editables[i].scope.$data = data;
}
}
};
//$scope.$watch('purchaseHeader.DiscountPercent', function (newValue, oldValue, scope) {
//});
$scope.addNewProduct = function() {
$scope.inserted = {
isNew: true,
BatchNo: '',
Qty: 1,
FreeQty: 0,
ExpiryDate: '',
Packing: 1,
AssortedQty: 0,
VAT: 4,
DiscountPercentage: $scope.purchaseHeader.DiscountPercent,
MRP: 0,
COSTVATAmount: 0,
MRPVATAmount: 0
};
$scope.purchaseOrders.push($scope.inserted);
};
$scope.addNewProduct();
$scope.removeProduct = function(index) {
//$scope.users.splice(index, 1);
};
$scope.cancelOrder = function() {
for (var i = $scope.purchaseOrders.length; i--;) {
var order = $scope.purchaseOrders[i];
// undelete
if (order.isDeleted) {
delete order.isDeleted;
}
// remove new
if (order.isNew) {
$scope.purchaseOrders.splice(i, 1);
}
}
};
$scope.formatProductNameLabel = function(model) {
return model;
};
$scope.showProductName = function(model) {
return model.ProdId;
};
$scope.getStats = function(q) {
return $scope.states;
};
$scope.showSelectedVAT = function(order) {
var selected = [];
selected = $filter('filter')($scope.taxes, {
Tax: order.VAT
});
return selected.length ? selected[0].value : $scope.taxes[0].value;
};
$scope.calculateMRPVATAmount = function(order) {
var amount = (order.Qty * parseFloat(order.MRP)) * (parseFloat(order.VAT) / 100);
return (isNaN(amount)) ? 0 : amount;
}
$scope.calculateCostVATAmount = function(order) {
var amount = (order.Qty * parseFloat(order.Cost)) * (parseFloat(order.VAT) / 100);
return (isNaN(amount)) ? 0 : amount;
}
$scope.calculateMRPAbt = function(order) {
var mrpVatAmt = $scope.calculateMRPVATAmount(order);
var amount = ((order.Qty * parseFloat(order.MRP)) - mrpVatAmt);
return (isNaN(amount)) ? 0 : amount;
}
});
// --------------- mock $http requests ----------------------
app.run(function($httpBackend) {
$httpBackend.whenGET('/groups').respond([{
id: 1,
label: 'user'
}, {
id: 2,
label: 'customer'
}, {
id: 3,
label: 'vip'
}, {
id: 4,
label: 'admin'
}]);
$httpBackend.whenPOST(/\/saveUser/).respond(function(method, url, data) {
data = angular.fromJson(data);
return [200, {
status: 'ok'
}];
});
});
var-app=angular.module(“app”、“ui.bootstrap”、“xeditable”、“ngMockE2E”);
应用程序运行(功能(可编辑选项){
editableOptions.theme='bs3';
});
app.controller('Ctrl',函数($scope,$filter,$http){
$scope.taxes=[{
数值:5.5,
正文:“5.5”
}, {
价值:4,
正文:“4”
}];
$scope.purchaseOrders=[];
$scope.purchaseId=0;
$scope.selectedVal=0;
$scope.purchaseHeader={};
$scope.productMaster=[];
$scope.inserted={};
$scope.savePurchase=函数(){
$scope.purchaseHeader.PurchaseItems=$scope.purchaseOrders;
}
$scope.savePurchaseItem=函数(数据、id、行格式、idx){
//数据没有MRPVATAmount、COSTVATAmount属性。它只有可编辑的数据
}
$scope.checkProductName=函数(数据,行格式){
调试器;
}
$scope.setDiscPercentToAll=函数(数据,表格形式){
对于(var i=0;ivar app = angular.module("app", ["ui.bootstrap", "xeditable", "ngMockE2E"]);
app.run(function(editableOptions) {
editableOptions.theme = 'bs3';
});
app.controller('Ctrl', function($scope, $filter, $http) {
$scope.taxes = [{
value: 5.5,
text: '5.5'
}, {
value: 4,
text: '4'
}];
$scope.purchaseOrders = [];
$scope.purchaseId = 0;
$scope.selectedVal = 0;
$scope.purchaseHeader = {};
$scope.productMaster = [];
$scope.inserted = {};
$scope.savePurchase = function() {
$scope.purchaseHeader.PurchaseItems = $scope.purchaseOrders;
}
$scope.savePurchaseItem = function(data, id, rowform, idx) {
//data doesnot have MRPVATAmount, COSTVATAmount property. It has only editable data
}
$scope.checkProductName = function(data, rowform) {
debugger;
}
$scope.setDiscPercentToAll = function(data, tableform) {
for (var i = 0; i < tableform.$editables.length; i++) {
if (tableform.$editables[i].name === 'user.status') {
tableform.$editables[i].scope.$data = data;
}
}
};
//$scope.$watch('purchaseHeader.DiscountPercent', function (newValue, oldValue, scope) {
//});
$scope.addNewProduct = function() {
$scope.inserted = {
isNew: true,
BatchNo: '',
Qty: 1,
FreeQty: 0,
ExpiryDate: '',
Packing: 1,
AssortedQty: 0,
VAT: 4,
DiscountPercentage: $scope.purchaseHeader.DiscountPercent,
MRP: 0,
COSTVATAmount: 0,
MRPVATAmount: 0
};
$scope.purchaseOrders.push($scope.inserted);
};
$scope.addNewProduct();
$scope.removeProduct = function(index) {
//$scope.users.splice(index, 1);
};
$scope.cancelOrder = function() {
for (var i = $scope.purchaseOrders.length; i--;) {
var order = $scope.purchaseOrders[i];
// undelete
if (order.isDeleted) {
delete order.isDeleted;
}
// remove new
if (order.isNew) {
$scope.purchaseOrders.splice(i, 1);
}
}
};
$scope.formatProductNameLabel = function(model) {
return model;
};
$scope.showProductName = function(model) {
return model.ProdId;
};
$scope.getStats = function(q) {
return $scope.states;
};
$scope.showSelectedVAT = function(order) {
var selected = [];
selected = $filter('filter')($scope.taxes, {
Tax: order.VAT
});
return selected.length ? selected[0].value : $scope.taxes[0].value;
};
$scope.calculateMRPVATAmount = function(order) {
var amount = (order.Qty * parseFloat(order.MRP)) * (parseFloat(order.VAT) / 100);
return (isNaN(amount)) ? 0 : amount;
}
$scope.calculateCostVATAmount = function(order) {
var amount = (order.Qty * parseFloat(order.Cost)) * (parseFloat(order.VAT) / 100);
return (isNaN(amount)) ? 0 : amount;
}
$scope.calculateMRPAbt = function(order) {
var mrpVatAmt = $scope.calculateMRPVATAmount(order);
var amount = ((order.Qty * parseFloat(order.MRP)) - mrpVatAmt);
return (isNaN(amount)) ? 0 : amount;
}
});
// --------------- mock $http requests ----------------------
app.run(function($httpBackend) {
$httpBackend.whenGET('/groups').respond([{
id: 1,
label: 'user'
}, {
id: 2,
label: 'customer'
}, {
id: 3,
label: 'vip'
}, {
id: 4,
label: 'admin'
}]);
$httpBackend.whenPOST(/\/saveUser/).respond(function(method, url, data) {
data = angular.fromJson(data);
return [200, {
status: 'ok'
}];
});
});
$scope.calculateCostVATAmount = function(order) {
var amount = (order.Qty * parseFloat(order.Cost)) * (parseFloat(order.VAT) / 100);
order.COSTVATAmount = (isNaN(amount)) ? 0 : amount;
return order.COSTVATAmount;
}