从同一工厂调用Angular工厂中的变量

时间:2017-02-27 10:04:23

标签: javascript angularjs

我有一个简单的工厂返回一个数组和一个函数:

function stockCommons() {
        return {
            unitTypes: [
                {
                    code: 'UN',
                    unitTypeIndex: 0
                },
                {
                    code: 'PK',
                    unitTypeIndex: 2
                },
            ],

            unitTypeChanged: function (changedToUnitType) {
                return var activeUnitType = stockCommons.unitTypes.filter(function (obj) {
                    return obj.code == changedToUnitType;
                })[0];
        }
    }

在函数中,我试图在stockCommons.unitTypes处对数组进行引用,但它不起作用。我已经尝试了these solutions,但它们也没有用。

如何在函数中使用unitTypes数组?

2 个答案:

答案 0 :(得分:1)

function stockCommons() {
        return {
            unitTypes: function() {
                this.stock = [
                {
                    code: 'UN',
                    unitTypeIndex: 0
                },
                {
                    code: 'PK',
                    unitTypeIndex: 2
                },
               ];
               return this.stock;
            },

            unitTypeChanged: function (changedToUnitType) {
                return var activeUnitType = stockCommons.unitTypes.filter(function (obj) {
                    return obj.code == changedToUnitType;
                })[0];
        }
    }

答案 1 :(得分:1)

简单的解决方案是将unitTypes定义为私有变量并引用它。

function stockCommons() {
    var unitTypes = [{
            code: 'UN',
            unitTypeIndex: 0
        }, {
            code: 'PK',
            unitTypeIndex: 2
        },
    ];

    return {
        unitTypes: unitTypes,

        unitTypeChanged: function (changedToUnitType) {
            var activeUnitType = unitTypes.filter(function (obj) {
                    return obj.code == changedToUnitType;
                })[0];
            return activeUnitType;
        }
    }
}