0

私のangularjsアプリケーションでは、値を保存してコントローラにそれらを共有するためにfactoryを使用しています。しかし、私は独特の問題に陥っています。は、anglejsの工場値の変更元を見つける必要があります

次は私の工場で:

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を呼び出さなくても、allLinksの値がfactory.quoteLinksに変更されていて、どこが変更されているのか分かりませんその特定の点でallLinksを変更するにはfactory.setQuoteLinksに電話していませんが、工場でこの値がどこから変更されているかを追跡する可能性はありますか?この変更の原因は何ですか?私はそれを理解する手がかりがなくなった?

+2

'factory.getQuoteLinks()'のコンシューマがコレクションを変更している場合、それらの変更は 'factory.quoteLinks'によって参照されるオブジェクトに対して行われます。 –

答えて

1

Ax Max Sorinは、参照番号をfactory.getQuoteLinksに返信しているため、おそらくここを外に変更している可能性があります。これを変更する必要がある場合は、角のコピーを使用してください:

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

これはコピーされたクォートリンクを返します。

関連する問題