尽管在 ChildCtrl 中实例化了一个“新”变量,我如何才能进行变量更改并将它们轻松传播回 ParentCtrl?最少到没有 $on's 和 $watch's 的额外积分(使其更易于实施)
父控件
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 ,当在子级中更改时,它会冒泡到父级。
示例:http: //jsfiddle.net/JHwxP/23/