我正在编写一个角度应用程序,其中父控制器管理全局状态,并在状态之间转换以向用户显示信息。
我跟着this answer并使用params将对象发送到子组件/控制器。它工作正常,但如果我更新子对象中的值,这些更改不会反映在父对象中。
我的代码组织如下:
的index.html
<bodyng-controller="main-loop">
...
<li ui-sref="supernova({data:data})" ui-sref-active="active">
数据是一个对象,{&#34; a&#34;:1,&#34; b&#34;:2}
路由
.state("supernova", {
component: 'supernova',
params: { 'data': null }
成分</ P>
component('supernova', {
templateUrl: 'views/supernova.html',
controller: ['$stateParams', supernova],
controllerAs: 'supernova'
});
控制器
function supernova($stateParams) {
var ctrl = this;
ctrl.data= $stateParams.data;
我可以从视图和控制器中读取数据的精确值。但是如果我做这样的改变:
ctrl.stuff = function () {
ctrl.data.a = 20;
更改在组件中可见,但在父控制器中不可见。
有没有办法在使用ui-router结构的两者之间共享同一个对象实例?也就是说,一个中的变化反映在另一个中(以双向绑定方式)。