2014-03-31 123 views
0

道歉,如果這已經被問過,我不能在SO找到任何東西,我希望作出一些澄清(或一個很好的絕招)

鑑於

<div ng-controller="Parent"> 
    <div ng-controller="Child"> 
     //child manipulation of parent scope object 
    </div> 
</div> 

父親集JSON對象,所以它是提供給多個子領域 -

$scope.persistentData = getAJSONObject(); 

子作用域想要做一些計算和更新本地JSON對象的關鍵是

doCalculations($scope.persistentData.keyIWantToAlter) 

我需要家長的範圍明確地分配給孩子的計算功能的結果(如下圖所示),或者是沒有辦法,我可以傳播完成更改到父的方式 - 已繼承自父通過只使用孩子的繼承範圍對象的範圍?

$parent.$scope.$persistentData.keyIWantToAlter = 
    doCalculations($scope.persistentData.keyIWantToAlter) 
+1

請考慮改名,它目前真的很難遵循你所要求的。 – Nix

+0

希望我沒有更糟糕 – SMC

+0

它更清晰..是'getAJSONObject'異步? – Nix

回答

2

我看不到任何問題,你給你的blurb將需要給我們更多。我可以告誡你試圖在作用域上「共享」嵌套對象。

This fiddle說明如果您在孩子身上並且「覆蓋」參考文件會發生什麼情況。 json2顯示這些開始是一樣的,但我覆蓋子範圍中的引用,現在變量分離。

我認爲你遇到類似的問題,但不能證明它,直到你提供更多的信息。

<div ng-controller="ParentCtrl"> 
    Hello, {{json2}}! 
    <div ng-controller="ChildCtrl"> 
      Hello, {{json2}}! 
    </div> 
</div> 



function ParentCtrl($scope) { 
    $scope.json2 = { 
     child:{ 
      name: 'parent' 
     } 
    } 

} 

function ChildCtrl($scope, $timeout) { 

    $scope.json2 = { 
     child:{ 
      name: 'child' 
     } 
    } 

    $timeout(function(){ 
     $scope.json2.child.name= 'nick'; 
    },5000); 
} 
+0

感謝這確實是一個愚蠢的覆蓋我hadn我發現,即使顯式的$父引用是醜陋的,它們也可能在長期運行中更安全 – SMC

+0

使用服務;)當您依賴嵌套的作用域時,可以遇到各種問題。 – Nix

+0

謝謝我必須考慮這一點,你會提供服務的父母控制器,或者我應該思考完全在控制器之外? – SMC