javascript - AngularJS 嵌套作用域和更改 $parent 作用域变量

标签 javascript angularjs scope

如果之前有人问过这个问题,我深表歉意,我在 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) 

最佳答案

我看不出您提供的简介有任何问题,您需要向我们提供更多信息。我可以警告您不要尝试在范围内“共享”嵌套对象。

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);
}

关于javascript - AngularJS 嵌套作用域和更改 $parent 作用域变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22766175/

相关文章:

javascript - 如何在 AngularJS 中显示隐藏元素?

angularjs - 在跨多个指令共享的链接函数中添加 Angular 依赖项

javascript - Angularjs - Uncaught Error : [$injector:modulerr]

javascript - 如何通过jQuery的点击函数获取用户输入

javascript - 使用 Socket.io 和 iPhone 加速计

javascript - AngularJS UI Bootstrap 模式无法执行范围内的功能

Python 全局命名空间值

JavaScript:检测不可见变量

javascript - Algolia 匹配精确属性

javascript - 向同一对象的属性添加新值