私は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;
});
}]
}
};
コントローラからDOM要素にアクセスすることは信頼性が低く、動作しません。あなたはそれを誤解している。共有可能なデータに対するサービスを検討します。 – dfsq
'debugger'文を' onExit'の最初の行に置き、DevToolsが開いてevalと比較する間にページをリロードしてみてください。 –
私はして、それは未定義に戻った。私はonEnterセクションではうまくいきましたが、onExitセクションではうまくいきませんでした。 – GHA0991