在我的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.setQuoteLinks
,allLinks
中factory.quoteLinks
的值也会被修改为其他一些值而我即使我没有在factory.setQuoteLinks
调用allLinks
来修改该$ sudo crontab -e
,我也无法弄清楚修改的位置。我是否有可能跟踪工厂中这个值被修改的位置,我的意思是这个修改的原因?我不知道如何解决这个问题?
答案 0 :(得分:1)
Ax Max Sorin
说你可能在这里之外修改它,因为你在factory.getQuoteLinks
传回了对它的引用。如果您需要更改,请使用角度副本:
factory.getQuoteLinks = function() {
return angular.copy(factory.quoteLinks);
};
这将返回复制的quoteLinks。