如何将变量更改传递回ParentCtrl,即使在ChildCtrl中实例化了一个新的变量?额外的分数是尽可能少地使用$on和$watch(这样更容易实现)
ParentCtrl
- ChildCtrl / ChildCtrl2 / ChildCtrl3 / ChildCtrl4 - View
我的ChildCtrl有足够不同,无法轻松抽象出主布局和ng-view,但它们都依赖于ParentCtrl中的相同函数。 $scope.searchTerms在ParentCtrl中定义,但具有ng-model ='searchTerms'的输入框位于子控制器的视图中。当此变量更改时,仅在ChildCtrls中反映,而不在ParentCtrl中。
ParentCtrl
- ChildCtrl / ChildCtrl2 / ChildCtrl3 / ChildCtrl4 - View
我的ChildCtrl有足够不同,无法轻松抽象出主布局和ng-view,但它们都依赖于ParentCtrl中的相同函数。 $scope.searchTerms在ParentCtrl中定义,但具有ng-model ='searchTerms'的输入框位于子控制器的视图中。当此变量更改时,仅在ChildCtrls中反映,而不在ParentCtrl中。
Example: 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,并在子级中更改它,这样它就会向上冒泡到父级。