引用VueJS中的深层嵌套对象的方法

时间:2017-06-15 13:09:26

标签: javascript arrays methods scope vue.js

对于全局数据,我必须实现一个对象数组。 我做了一个名为newDevis的基本原型。 (对不起法语单词和英语之间的混合^^) 这还包含两个对象数组

devisPieces和devisMainOeuvres,它们填充了名为

的原型数组

devisPiece和devisMainOeuvre

然后我有一个方法使用这两个数组的数据来计算它们的总和,我将在以后使用。

问题是我总是得到“newDevis”未定义。

所以这是全局vue应用程序 PS:你可能想知道为什么不调用应用程序直接在newDevis和newFacture中执行操作: 好吧,我想做一个共同的功能(因为基本上它做同样的工作但是针对不同的目标)并且根据你传递的字符串(“devis”或“facture”),它对指定的数据做了必要的操作。

{
var standard = new Vue({
    el: '#standard',
    data() {
        return {
            /*more Data*/
            //Prototypes Data
            
            //Devis Facture
                newDevis: {
                    codeDevis: '', dateDevis: '', nombrePieces: 0, sousTotal: 0, totalRemise: 0,
                    totalHT: 0, fodec: 0, totalTaxes: 0, timbreFiscal: 0, totalTTC: 0,
                    devisPieces: [], devisMainOeuvres: []
                },
                devisPiece: { nomPiece: '', quantite: 0, prixUnitaire: 0, tva: 0, remise: 0 },
                devisMainOeuvre: { libelleMainOeuvre: '', nombreHeure: 0, prixUnitaire: 0, remise: 0 },
                //Facture vars
                newFacture: {
                    codeFacture: '', dateFacture: '', nombrePieces: 0, sousTotal: 0, totalRemise: 0,
                    totalHT: 0, fodec: 0, totalTaxes: 0, timbreFiscal: 0, totalTTC: 0,
                    facturePieces: [], factureMainOeuvres: []
                },
                facturePiece: { nomPiece: '', quantite: 0, prixUnitaire: 0, tva: 0, remise: 0 },
                factureMainOeuvre: { libelleMainOeuvre: '', nombreHeure: 0, prixUnitaire: 0, remise: 0 },
            
            //fictive data                
        }
    }
    , watch: {
    },
    methods: {
        // Devis et Facture
        calculQuantiteFlouss(flouss) {
            self = this;
            Flouss = self.capitalize(flouss);
            nameDevis = "new" + Flouss;
            devisName1 = flouss + "Pieces";
            devisName2 = flouss + "MainOeuvre";                   
            var quantitePieces = 0;
            function sumPieces(flouss) {
                if (!isNaN([eval(flouss)].quantite)) {
                    quantitePieces += +[eval(flouss)].quantite;
                }
                if (!isNaN([eval(flouss)].nombreHeure)) {
                    quantitePieces += +[eval(flouss)].nombreHeure;
                }
            };
            console.log(self[eval(nameDevis)]);//to check its type
            self[eval(nameDevis)][eval(devisName1)].foreach(sumPieces);
            self[eval(nameDevis)][eval(devisName2)].foreach(sumPieces);
            return self[eval(nameDevis)].quantite = quantitePieces;
        },
    },
    computed: {
    },
    mounted() {
    }
})
}

我觉得这是一个范围问题,但它不起作用。

0 个答案:

没有答案