angular.element(' #home')返回undefined

时间:2017-10-04 13:44:28

标签: javascript angularjs angular-ui-router

我正在使用ui-router和angularJS 1.4,我想访问控制器范围。 我第一次使用angular.element(' #home')。scope()。HomeCtrl,它运行正常。 第二次它甚至没有回归'#home'您可以在代码段中找到更多详细信息。

造成这种行为的原因是什么?

            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;
                        });
                }]
            }
        };

1 个答案:

答案 0 :(得分:0)

要在状态之间传递数据,您可以使用$ stateProvider,并使用数据参数传递DOM元素。