2017-01-26 24 views
2

私はAngular 1.5アプリケーションをリファクタリングしていますが、アプリケーション全体を分割することなく問題を解決しようとしています。親コントローラのプロパティをuiRouterの子状態から変更する

私の問題はこれです。私はプロパティを持つ親状態コントローラを持っています。子状態テンプレートには、親状態のプロパティを更新する必要のあるコンポーネントが含まれています。

私の状態はとてもように設定されています

$stateProvider 
    .state('parent', { 
    abstract: true, 
    component: 'parentComponent' 
    }) 
    .state('parent.child', { 
    url: '/child', 
    component: 'childComponent' 
    }) 

子コンポーネントがコールバックとしてコントローラメソッドを指定して独自のコンポーネントを含むテンプレートがあります。

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

私はコールバックにすることを望みます親コントローラのプロパティを変更します。

親コントローラに$ scopeを挿入してスコープオブジェクトにプロパティを追加し、スコープ継承を使用して子からプロパティを変更することができますが、プロジェクトから$ scopeを削除しようとしていますが、それ以上は追加しないでください。親コントローラを更新できる他の方法はありますか?あなたの壮大-子コンポーネントのコントローラには、このようなチェーンsenarioで

答えて

1

私はサービス内のプロパティを保存するためにあなたをお勧めします

(function() { 
    'use strict'; 

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

    MyService.$inject = []; 

    /* @ngInject */ 
    function MyService() { 



     this.myProperty = ''; // some default value if exists 
    } 
})(); 

は、In MyServiceその後、

doSomething() { 

    this.MyService.myProperty = 'some new value'; 
} 

を注入親コンポーネントのコントローラにMyServiceを注入します。

+0

ありがとう、これはまさに私がやったことです。 – jhummel

関連する問題