2017-10-04 8 views
1

私はui-routerとangularJS 1.4を使用していますが、私はコントローラスコープにアクセスしたいです。 初めて私はangular.element( '#home')。scope()。HomeCtrlを使用して正常に動作しました。 2回目に '#home'要素が返されなかった場合は、コードスニペットの詳細を見つけることができます。angle.element( '#home')undefinedを返す

この現象の原因は何ですか?

  var modifyBoardState = { 
      name: "root.main.home.modify", 
      url: "/modify/{boardId}", 
      authenticate: true, 
      onEnter: ['DataStore', 'board', '$state', function(DataStore, board, $state) { 
       var vm = angular.element('#home').scope().vm; // This one works fine. 
       vm.currentBoard.name = board.getName(); 
       vm.currentBoard.colorIndex = board.getColorIndex(); 
       vm.currentBoard.iconIndex = board.getIconIndex(); 
       vm.colorArray[vm.getPaletteColors()[board.getColorIndex()]] = 'active'; 
       vm.iconArray[vm.getPaletteIcons()[board.getIconIndex()]] = 'active'; 
       vm.addBoard = function() { 
        board.modify(vm.currentBoard.name, vm.currentBoard.colorIndex, vm.currentBoard.iconIndex); 
        $state.go('root.main.home'); 
       }; 
      }], 
      onExit: ['$mdMenu', function($mdMenu) { 
       $mdMenu.hide(); 
       // This one returns undifined. 
       var vm = angular.element('#home').scope().vm; 
      }], 
      resolve: { 
       board: ['DataStore', '$stateParams', function(dataStore, $stateParams) { 
        return dataStore.fetchBoard($stateParams.boardId) 
         .then(function(board) { 
          return board; 
         }); 
       }] 
      } 
     }; 
+0

コントローラからDOM要素にアクセスすることは信頼性が低く、動作しません。あなたはそれを誤解している。共有可能なデータに対するサービスを検討します。 – dfsq

+0

'debugger'文を' onExit'の最初の行に置き、DevToolsが開いてevalと比較する間にページをリロードしてみてください。 –

+0

私はして、それは未定義に戻った。私はonEnterセクションではうまくいきましたが、onExitセクションではうまくいきませんでした。 – GHA0991

答えて

0

州間でデータを渡すには、$ stateProviderを使用し、データパラメータを使用してDOM要素を渡すことができます。

+0

私は、すべての特殊コントローラの範囲にアクセスしたいだけです。コードを見て、私はそれが最初のケースではなく、2番目のケースで働いたと述べた。 – GHA0991

関連する問題