Angularjs 正在从uiRouter中的子状态更改父控制器属性
我正在重构一个Angular 1.5应用程序,我试图在不分解整个应用程序的情况下解决一个问题 我的问题是,;我有一个具有属性的父状态控制器。子状态模板包含需要更新父状态中属性的组件 我的州是这样建立的: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
$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;
}
谢谢,这正是我最后要做的。