片道:
$scope.$parent.data = [{id:1}, {id:2}]
それは正しくないと思いますが。
もう 1 つは、親で空の配列を作成し、子で置き換えるのではなく、単に変更することです。
または、本当に必要なのはサービスを使用することかもしれません。それはあなたが本当に達成しようとしていることに依存します。
サービスの定義:
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>
コントローラーがいかにクリーンでビジネス モデルに適合しているか、チケットの概念を 1 か所でクリーンに拡張し、コントローラーに挿入することでどこからでもアクセスできることに注目してください。コントローラー間の階層や関係を気にしたり、環境を汚染したりすることなく、これを行うことができます。一方、アプリケーションが非常に単純な場合はやり過ぎかもしれません。