需要找出 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.setQuoteLinks
,factory.quoteLinks
中 allLinks
的值也被修改为其他一些值,我即使我没有在那个特定点调用 factory.setQuoteLinks
来修改 allLinks
,我也无法弄清楚这是从哪里修改的。我有没有可能从工厂中的这个值被修改的地方跟踪,我的意思是这个修改的原因?我不知道怎么弄明白?
Ax Max Sorin
说您可能在此处之外修改它,因为您在 factory.getQuoteLinks
中传回了对它的引用。如果您需要此更改,请使用 angular 副本:
factory.getQuoteLinks = function() {
return angular.copy(factory.quoteLinks);
};
这将 return 复制引用链接。
在我的 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.setQuoteLinks
,factory.quoteLinks
中 allLinks
的值也被修改为其他一些值,我即使我没有在那个特定点调用 factory.setQuoteLinks
来修改 allLinks
,我也无法弄清楚这是从哪里修改的。我有没有可能从工厂中的这个值被修改的地方跟踪,我的意思是这个修改的原因?我不知道怎么弄明白?
Ax Max Sorin
说您可能在此处之外修改它,因为您在 factory.getQuoteLinks
中传回了对它的引用。如果您需要此更改,请使用 angular 副本:
factory.getQuoteLinks = function() {
return angular.copy(factory.quoteLinks);
};
这将 return 复制引用链接。