Javascript 从子级更新父作用域不会更新ngrepeat

Javascript 从子级更新父作用域不会更新ngrepeat,javascript,angularjs,angularjs-scope,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Scope,Angularjs Ng Repeat,我无法将子控制器与父控制器进行通信, i hv是一个将数据推送到ngrepeat中包含的父阵列的函数 推送后,正确追加父数组,其长度在父控制器中正确显示,但ngrepeat不会刷新 <div ng-controller="parentCtrl"> This works {{shared.arr.length}} <br/> This works Too{{shared.arr|json}} <br/> <div ng-repeat="a in shar

我无法将子控制器与父控制器进行通信, i hv是一个将数据推送到ngrepeat中包含的父阵列的函数

推送后,正确追加父数组,其长度在父控制器中正确显示,但ngrepeat不会刷新

<div ng-controller="parentCtrl">
This works {{shared.arr.length}} <br/>
This works Too{{shared.arr|json}} <br/>

<div ng-repeat="a in shared.arr">
{{a}} This dont, it only show old data.
</div>

<section ng-contoller="childCtrl">
<button ng-click="test()">Test</button>
</section>
</div>
angular.module('testApp')
  .controller('parentCtrl', function ($scope) {
$scope.shared = {arr:[1,2]};
});
  .controller('childCtrl', function ($scope) {
$scope.test = function(){$scope.shared.arr.push(4);}
});

这项工作{shared.arr.length}}
这也适用于{{shared.arr | json}}
{{a}}这不是,它只显示旧数据。 试验 角度.module('testApp') .controller('parentCtrl',函数($scope){ $scope.shared={arr:[1,2]}; }); .controller('childCtrl',函数($scope){ $scope.test=function(){$scope.shared.arr.push(4);} });
由于此代码在我的情况下运行良好,我将假设在您的代码中,您也犯了在
中将控制器作为控制器写入的错误,这是一个非常愚蠢的错误:)

angular.module('testApp',[])
.controller('parentCtrl',['$scope',parentCtrl])
.controller('childCtrl',['$scope',childCtrl]);
函数parentCtrl($scope){
$scope.shared={
arr:[1,2]
};
}
函数childCtrl($scope){
$scope.test=功能(arr){
arr.push(4);
}
}
试验

试试这个代码

有两个错误: 1) ng controller=“childCtrl”,而不是ng contoller=“childCtrl” 2) 您已传递到“test”函数父变量中。在本例中,它可能会产生很多不太清楚的错误,但也有可能。
使用“controller as”语法。您可以阅读相关内容。

$scope.test=function(){$scope.$parent.shared.arr.push(4);}这样使用它可以直接访问和操作父作用域object@SerhatCan此处不需要
$parent
,,由于父对象已经创建了一个对象结构,所以请遵循原型继承。解决方法是将
ng controller
更改为
ng controller
angular.module('testApp', [])
  .controller('parentCtrl', ['$scope', parentCtrl])
  .controller('childCtrl', ['$scope', childCtrl]);

function parentCtrl ($scope) {
  $scope.shared = {
    arr: [1, 2]
  };
}
function childCtrl ($scope) {
  $scope.test = function (arr) {
    arr.push(4);
  }
}

<div ng-controller="childCtrl">
    <button ng-click="test(shared.arr)">Test</button>
</div>