Angularjs 正在从uiRouter中的子状态更改父控制器属性

Angularjs 正在从uiRouter中的子状态更改父控制器属性,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在重构一个Angular 1.5应用程序,我试图在不分解整个应用程序的情况下解决一个问题 我的问题是,;我有一个具有属性的父状态控制器。子状态模板包含需要更新父状态中属性的组件 我的州是这样建立的: $stateProvider .state('parent', { abstract: true, component: 'parentComponent' }) .state('parent.child', { url: '/child', comp

我正在重构一个Angular 1.5应用程序,我试图在不分解整个应用程序的情况下解决一个问题

我的问题是,;我有一个具有属性的父状态控制器。子状态模板包含需要更新父状态中属性的组件

我的州是这样建立的:

$stateProvider
  .state('parent', {
    abstract: true,
    component: 'parentComponent'
  })
  .state('parent.child', {
    url: '/child',
    component: 'childComponent'
  })
子组件有一个模板,其中包含自己的组件,该组件将控制器方法指定为回调:

 <grand-child on-change="$ctrl.doSomething()"></grand-child>

我希望该回调更改父控制器上的属性


我可以在父控制器中注入$scope,然后将属性添加到scope对象,并使用scope继承来更改子控制器中的属性,但我尝试从项目中删除$scope,而不是添加更多。有没有其他方法可以更新父控制器?

在这样一个链式的senario中

我建议您将该物业存放在服务区

(function () {
    'use strict';

    angular
        .module('app')
        .service('MyService', MyService);

    MyService.$inject = [];

    /* @ngInject */
    function MyService() {



        this.myProperty = ''; // some default value if exists
    }
})();
在grand child组件的控制器中注入
MyService

doSomething() {

  this.MyService.myProperty = 'some new value';
}
$onInit() {

  this.myProperty = this.MyService.myProperty;
}
在父组件的控制器中注入
MyService

doSomething() {

  this.MyService.myProperty = 'some new value';
}
$onInit() {

  this.myProperty = this.MyService.myProperty;
}

谢谢,这正是我最后要做的。