ChildCtrl で「新しい」変数がインスタンス化されているにもかかわらず、変数の変更を取得して ParentCtrl に簡単に反映するにはどうすればよいですか? $on と $watch が最小限またはまったくない場合の追加ポイント (実装が容易になります)
親コントロール
ChildCtrl / ChildCtrl2 / ChildCtrl3 / ChildCtrl4
- 意見
私の ChildCtrl は、マスター レイアウトと ng-view を簡単に抽象化できないほど十分に異なっていますが、それらはすべて ParentCtrl の同じ関数に依存しています。
$scope.searchTerms は ParentCtrl で定義されていますが、 ng-model='searchTerms' の入力ボックスは子コントローラーのビューにあります。この var が変更されると、ParentCtrl には反映されず、ChildCtrls のみに反映されます。
例: http://jsfiddle.net/JHwxP/22/
HTML 部分
<div ng-app>
<div ng-controller="Parent">
parentX = {{x}} <br/>
parentY = {{y}}<br/>
<div ng-controller="Child">
childX = {{x}}<br/>
childY = {{y}}<br/>
<a ng-click="modifyBothScopes()">modifyBothScopes</a><br>
<br>
The changes here need to appear in 'Parent'. <input ng-model='y'>
</div>
</div>
</div>
コントローラー
function Parent($scope) {
$scope.x= 5;
$scope.y= 5;
}
function Child($scope) {
$scope.modifyBothScopes= function() {
$scope.$parent.x++;
};
}
アップデート
現在、共有サービスのアプローチを試みています: https://gist.github.com/exclsr/3595424
アップデート
エミット/ブロードキャストシステムを試す
解決しよう 問題: 親に $scope.searchTerms を保存していましたが、変更すると、子の $scope にスペースが作成されました。
解決策:親で $scope.search.terms を実行する必要があり、子で変更すると、親にバブルアップします。