シナリオがあります。共有ボタンがあり、html タグにある metaCtrl というコンテナー コントローラーがあります。
また、内部コントローラー。
クリックすると model.share() 関数を呼び出す共有ボタンがあります。
コード:
app.controller('metaCtrl', function($scope){
$scope.model = {};
$scope.model.share = function(){
$location.path('/share').search({'share' : '1'});
}
});
共有ページ自体のコントローラー:
app.controller('shareCtrl', function($scope)){
$scope.layout.shareVisible = $location.path().share == 1 ? true : false;
$scope.model.share = function(){
$scope.layout.shareVisible = $scope.layout.shareVisible ? false : true;
var shareUrlValue = $scope.layout.shareVisible ? 1 : null;
$location.search('share', shareUrlValue);
}
});
アイデアは、アプリケーション全体で同じ HTML パターンを使用することですが、(ユーザーが既にそこにいる場合) 共有ページの共有セクションを切り替えるだけであり、ユーザーが現在そこにいない場合は共有ビューに送信します。
問題は、sahre ページに移動してから別のページに戻った後、関数 share() が、metaCtrl ではなく、shareCtrl 内の関数を参照していることです。