如何在AngularJS中更新父作用域

How to update parent scope in AngularJS?

本文关键字:更新 作用域 AngularJS      更新时间:2023-09-26

我试图使用两个解决方案从子控制器更新我的父范围,但我不能使它工作。apply()不工作

HTML:

<div ng-controller="ControllerA">
   <div ng-show="tab_selected == 1">Content1</div>
   <div ng-show="tab_selected == 2">Content2</div>
   <div ng-controller="ControllerB">
      <span ng-click="updateScope()"></span>
   </div>
</div>
JS:
app.controller('ControllerA', ['$scope', 
  function ($scope) {
     $scope.tab_selected = 1;
}]);
app.controller('ControllerB', ['$scope', 
  function ($scope) {
     $scope.updateScope = function(){
        $scope.tab_selected = 2;
        // $scope.apply(function(){  $scope.tab_selected = 2; }); 
     }
}]);

不能更新父对象中的基本属性,只能更新对象属性。所以你需要使用:

$scope.someObject= {};
$scope.someObject.tab_selected= 2;

控制器有单独的作用域,但有几种方式来通信

  • $广播事件到父范围
  • 使用双向数据绑定服务,即http://plnkr.co/edit/Vqk1Fe?p=preview
  • 具有范围继承,即http://plnkr.co/edit/7wcMnJ?p=preview