2014-06-19 165 views
2

我試圖用兩個解決方案從子控制器更新我的父範圍,但我無法使其工作。 apply()沒有工作如何在AngularJS中更新父範圍?

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; }); 
    } 
}]); 
+0

'$範圍$ parent.tab_selected = 2;' –

+0

各種方法,但最簡單的方法是使用父範圍對象或數組(這將是即時可用的對面。父母和孩子的範圍 - http://stackoverflow.com/questions/16972976/angular-js-propagate-child-scope-variable-changes-to-parent-scope –

+0

對於神的愛:(這是10000nth,總是在角度$範圍內使用DOT – Milad

回答

1

不能更新在父對象的原始屬性,只有對象屬性。所以,你需要使用:

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