Angularjs ui路由器状态子项和解析程序

Angularjs ui路由器状态子项和解析程序,angularjs,angular-ui-router,angular-ui,state,Angularjs,Angular Ui Router,Angular Ui,State,我有一个父抽象状态,它有一个从服务器获取数据的解析器 然后,根据ui路由器解析程序继承的性质,我可以访问子状态控制器中解析的数据 ....controller('bla', function(resolvedData){.... 一切都很好,但我正在应用程序中实现一个功能,需要更改部分解析数据,并将其反映到整个应用程序中 我假设解析的数据不是对一个对象的引用,而是服务返回的内容的副本。正确吗?这意味着,如果在父抽象控制器中我更改了部分解析数据,它将不会反映在子状态中,因为它们将查看来自数据服务

我有一个父抽象状态,它有一个从服务器获取数据的解析器

然后,根据ui路由器解析程序继承的性质,我可以访问子状态控制器中解析的数据

....controller('bla', function(resolvedData){....
一切都很好,但我正在应用程序中实现一个功能,需要更改部分解析数据,并将其反映到整个应用程序中


我假设解析的数据不是对一个对象的引用,而是服务返回的内容的副本。正确吗?这意味着,如果在父抽象控制器中我更改了部分解析数据,它将不会反映在子状态中,因为它们将查看来自数据服务的解析数据的原始副本。

实际上,在测试之后,ui路由器解析器似乎确实将对解析数据的更改传递到子状态,此外,如果在同级状态中更改已解析的数据,则更改将反映在另一同级状态中

我试图找到它在ui路由器代码中的确切位置。

我假设解析的数据不是对一个对象的引用,而是服务返回的内容的副本。正确吗

。UI路由器传递返回的内容。如果它是一个参考,它将被所有消费者共享

检查代码(根本没有提到克隆-只传递已解析的内容)——

/**
* ....
*@param{object=}stateConfig.resolve
* 
*
*一个可选的映射字符串,依赖项的函数
*应注入控制器中。如果这些依赖关系中有任何一个是承诺,
*路由器将在控制器实例化之前等待它们全部被解析。
*如果所有承诺都已成功解决,则会触发$stateChangeSuccess事件
*解析承诺的值被注入引用它们的任何控制器。
*如果任何承诺被拒绝,将触发$stateChangeError事件。
* ... */

这比我的答案更完整,这就是我选择它的原因。虽然结论是一样的。
 /**

 * ....

 * @param {object=} stateConfig.resolve
 * <a id='resolve'></a>
 *
 * An optional map&lt;string, function&gt; of dependencies which
 *   should be injected into the controller. If any of these dependencies are promises, 
 *   the router will wait for them all to be resolved before the controller is instantiated.
 *   If all the promises are resolved successfully, the $stateChangeSuccess event is fired
 *   and the values of the resolved promises are injected into any controllers that reference them.
 *   If any  of the promises are rejected the $stateChangeError event is fired.

 * ... */