Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带计算列的Angularjs x-可编辑表格_Javascript_Angularjs_X Editable - Fatal编程技术网

Javascript 带计算列的Angularjs x-可编辑表格

Javascript 带计算列的Angularjs x-可编辑表格,javascript,angularjs,x-editable,Javascript,Angularjs,X Editable,在角度x-可编辑内联表格中工作。我希望有额外的列,这些列是基于其他列计算的值 用户添加行后,应根据索引将其更新为本地作用域数组。但是,我无法查看计算列MRPVATAmount,COSTVATAmount值。它显示仅绑定到x-可编辑字段的数据 如何在保存事件之前,即在$scope.savePurchaseItem中获取计算值,如COSTVATAmountonbeforesave事件? 光盘% 拯救 批处理 数量 自由的 包裹 MRP Abt 物料需求计划 成本 自由圆盘 增值税% 光盘% 数量

在角度x-可编辑内联表格中工作。我希望有额外的列,这些列是基于其他列计算的值

用户添加行后,应根据索引将其更新为本地作用域数组。但是,我无法查看计算列
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;
  }