一种方式:
$scope.$parent.data = [{id:1}, {id:2}]
虽然这感觉不对。
另一种方法是在父级中创建空数组,然后只修改它而不是在子级中替换它。
或者也许你真正需要的是使用服务;这取决于你真正想要完成的事情。
定义服务:
var myApp = angular.module('myApp', []);
myApp.factory('tickets', function factory() {
var tickets = [];
function add(ticket){
tickets.push(ticket);
}
function count(){
return tickets.length;
}
return {
add: add,
count: count
};
});
使用服务:
function Parent($scope, tickets) {
$scope.tickets = tickets;
}
function Child($scope, tickets) {
tickets.add({id:1});
tickets.add({id:2});
}
HTML:
<div ng-controller="Parent">
Data length: {{ tickets.count() }}<br>
<div ng-controller="Child">
</div>
</div>
请注意控制器的简洁性和商业模式,并且您可以在一个地方干净地扩展票证概念,并通过将其注入控制器从任何地方访问它。您可以做到这一点,而不必担心控制器之间的层次结构或关系或污染您的环境。另一方面,如果您的应用程序非常简单,则可能会有些过大。