2016-07-17 5 views

Odpowiedz

7

Krótka odpowiedź brzmi "tak", ale w zależności od kontekstu. Jeśli używasz vue-routera, ponieważ jestem na bieżącym projekcie, chciałbyś dodać do najbardziej zewnętrznego elementu, który chcesz zastosować. W moim przypadku używam początkowego elementu div elementu początkowego app.vue.

Jest jeden haczyk, który moim zdaniem jest trudnym wymaganiem, element musi znajdować się w potencjalnie nadających się do ogniskowania elementach. Sposób, w jaki sobie z tym poradzę polega na ustawianiu -1 tabindex i właśnie zadeklarowaniu moich super-klawiszy (głównie do celów debugowania teraz) na elemencie nadrzędnym w mojej aplikacji.

<template> 
    <div 
    id="app-main" 
    tabindex="-1" 
    @keyup.enter="doSomething" 
    > 
    <everything-else></everything-else> 
    </div> 
</template> 

EDIT:

Na marginesie, ja również dodać odrobinę dodatkowej konfiguracji do mojego vue-routera, aby upewnić się prawo elementem koncentruje kiedy przejście stron. Dzięki temu przewijanie stronicowania/stronicowania już znajduje się w prawej sekcji, w oparciu o obszar zawartości będący jedyną przewijaną sekcją. Trzeba również dodać tabindex = "- 1" również do elementu treści aplikacji.

router.afterEach(function (transition) { 
    document.getElementById('app-content').focus(); 
}); 

i podstawą mojego składnika app-content:

<template> 
    <div id="app-content" tabindex="-1"> 
    <router-view 
     id="app-view" 
     transition="app-view__transition" 
     transition-mode="out-in" 
    ></router-view> 
    </div> 
</template> 
+0

Ta odpowiedź wydaje się uzyskać sporo poglądów i nadal powinna być dość istotne, ale spojrzeć na poniższy link, jeśli chcą całkowicie w pełni globalnych skrótów klawiszowych opartych na oknach (około pół drogi w dół): https://vuejsdevelopers.com/2017/05/01/vue-js-cant-help-head-body/ –