需要找出angularjs工厂值修饰符

时间:2016-04-12 12:05:16

标签: angularjs angularjs-scope angularjs-service angularjs-factory

在我的angularjs应用程序中,我使用工厂来存储值并在控制器之间共享它们。但我遇到了一个特殊的问题。

以下是我的工厂:

    factory.quoteLinks = {allLinks : [], allLeftLinks :[],  curSection : "-1", insType: "-1", test:"-1"};

    factory.setQuoteLinks = function(qlinks, qleftLinks, qsubLink, qinsuranceType, testVal) {
            factory.quoteLinks = { allLinks : qlinks, allLeftLinks : qleftLinks, curSection: qsubLink, insType: qinsuranceType, test:testVal};
        };

    factory.getQuoteLinks = function() {
            return factory.quoteLinks;
        };

据我所知,只有当我拨打factory.quoteLinks时,这些值才会存储在factory.setQuoteLinks中。因此,每当我明确地调用factory.setQuoteLinks时,都会正确地存储这些值。经过一段时间调试代码的剩余部分,在调试期间,我注意到即使我没有调用factory.setQuoteLinksallLinksfactory.quoteLinks的值也会被修改为其他一些值而我即使我没有在factory.setQuoteLinks调用allLinks来修改该$ sudo crontab -e ,我也无法弄清楚修改的位置。我是否有可能跟踪工厂中这个值被修改的位置,我的意思是这个修改的原因?我不知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Ax Max Sorin说你可能在这里之外修改它,因为你在factory.getQuoteLinks传回了对它的引用。如果您需要更改,请使用角度副本:

factory.getQuoteLinks = function() {
        return angular.copy(factory.quoteLinks);
};

这将返回复制的quoteLinks。