需要找出 angularjs 出厂值修饰符的来源

need to find out the source of angularjs factory values modifier

在我的 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.setQuoteLinks 时,这些值才会存储在 factory.quoteLinks 中。因此,每当我显式调用 factory.setQuoteLinks 时,这些值都会被正确存储。在调试代码的剩余部分一段时间后,在调试过程中,我注意到即使我没有调用 factory.setQuoteLinksfactory.quoteLinksallLinks 的值也被修改为其他一些值,我即使我没有在那个特定点调用 factory.setQuoteLinks 来修改 allLinks,我也无法弄清楚这是从哪里修改的。我有没有可能从工厂中的这个值被修改的地方跟踪,我的意思是这个修改的原因?我不知道怎么弄明白?

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

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

这将 return 复制引用链接。