One way:
$scope.$parent.data = [{id:1}, {id:2}]
儘管這感覺不對。
Another would be to create the empty array in the parent, and just modify it instead of replacing it in the child.
或者,也許你真正需要的是use a service;這取決於你真正想要完成的事情。
定義服務:
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>
注意如何清潔和業務modelly的控制器,並且您可以將票據概念在一個地方乾淨地擴展,並通過將其注入到控制器中而從任何地方訪問它。你可以做到這一點,而不用擔心控制器之間的等級或關係或污染你的環境。另一方面,如果你的應用程序非常簡單,它可能會過度殺傷。
我想簡單地顯示父範圍內的票證長度。就這樣。你會建議什麼解決方案? – 2013-05-06 08:40:15
通常,在其他不相關的控制器之間進行通信的正確方式是通過服務,所以我認爲「正確的」解決方案是使用服務。這將保持你的控制器分離和清潔。缺點是它需要更多的代碼。我會添加一個例子。 – Supr 2013-05-06 09:00:46