有沒有辦法讓$發送給直接父控制器?
我有不同的控制器,每個控制器使用兒童分頁指令,看起來像這樣。
.directive('pagination', function() {
return {
restrict: 'E',
templateUrl: '/Views/Shared/_Pagination.html',
scope: { pagination: "=pagination" },
controller: ['$scope', function ($scope) {
$scope.$watch('pagination.Page', function (newVal, oldVal) {
$scope.$emit('pageChanged', { page: newVal });
});
}]
}
當您更改頁面控制器,分頁指令將父控制器趕上,和父控制器HTTPGET得到另一個頁面發送消息。
問題是:如果我有控制器A,其中包含子控制器B,它們都使用分頁。並且,當控制器B上的頁面發生更改時,控制器B和A都會捕獲該消息,因爲A是B的父代。因此,是否有辦法僅將消息發送給最直接的父代B,因爲我已更改頁面在控制器B.
或者,如果我設計這個錯誤..請給一些輸入了。謝謝!
你可以在$ emit中發送額外的參數,並在兩個控制器中決定它屬於哪個 –
@NechemyaKanelsky你能舉個例子嗎?我將發送什麼樣的參數?我不想對此進行硬編碼,因爲這種情況將在整個應用程序中使用。我想讓它變成模塊化。 – andyh0316
,所以你可以根據你所有的控制器在你的directice控制器裏面進行切換,然後爲每個控制器使用自定義的$ emit。或者根據當前的URL進行一些主控制器/服務器內的所有重定向,並將其映射到那裏 –