Modalを開くアプリケーションにボタンがあります。このモーダルは、UIルート状態で新しいURLに反して設定されます。AngularJS:UIルーターモーダル - 親スコープ
モーダルコントローラでは、親$スコープにアクセスする必要があります。親$ scopeには、todolist.addという子状態でアクセスする必要のある配列があります。
なぜ親の$ scopeにアクセスする必要がありますか?なぜなら、サーバーを再度呼び出さずに親の$ scopeデータを操作したいからです。
UIルータの親スコープにアクセスする最も良い方法は何ですか?
// routes
$stateProvider
.state('todolist', {
url: '/todo-list',
views: {
'@': {
...,
controller: 'ListsController'
}
}
})
.state('todolist.add', {
url: '/list/add',
onEnter: ['$state', '$uibModal', function ($state, $uibModal) {
$uibModal.open({
...,
controller: 'FormListModalController' // <- in this controller I need to access the $scope from the parent
}).result.finally(function() {
...
});
}]
})...
。
.controller('ListsController', function ($scope, ...) {
$scope.lists = []; // there are data in this $scope array
});
。
.controller('FormListModalController', function ($scope, ...) {
$scope.$parent.todolist.lists; // <- in this Modal's Ctrl I need to access the parent $scope (ListsController)
});
https://toddmotto.com/all- about-angulars-emit-broadcast-on-publish-subscribe/ 私は、イベントをブロードキャストして親スコープでそれを聞くのが最善の方法の1つだと思います。 また、サービスでデータを操作した後、イベントをブロードキャストしてコントローラにデータを再度提供させることを検討してください。 – Alburkerk