私はVue.js
でVanillaのjavascriptに似たリダイレクトをしたいのですが
window.location.href = 'some_url'
Vue.jsでこれを実現するにはどうすればいいですか。
vue-router
を使用している場合は、特定のルートに移動するためにrouter.go(path)
を使用する必要があります。ルーターはthis.$router
を使ってコンポーネント内からアクセスできます。
それ以外の場合、window.location.href = 'some url';
はシングルページ以外のアプリケーションでは正常に機能します。
EDIT:router.go()
はVueJS 2.0で変更されました。リダイレクトするにはrouter.Push({ name: "yourroutename"})
または単にrouter.Push("yourroutename")
を使用できます。
ドキュメントによると、router.Pushは好ましい方法のようです。
別のURLに移動するには、router.Pushを使用してください。このメソッドは新しいエントリを履歴スタックにプッシュするので、ユーザーがブラウザの戻るボタンをクリックすると、前のURLに移動します。
ソース: https://router.vuejs.org/ja/essentials/navigation.html
FYI:Webpackとコンポーネントのセットアップ、シングルページアプリ(Main.jsを通してルーターをインポートするところ)、私は次のように言ってルーター機能を呼ばなければなりませんでした:
this.$router
例:条件が満たされた後に「Home」という名前のルートにリダイレクトしたい場合:
this.$router.Push('Home')
ただ使用する:
window.location.href = "http://siwei.me"
Vue-routerを使わないでください。そうしないと、 " http://yoursite.com/#!/http://siwei.me "にリダイレクトされます。
私の環境:ノード6.2.1、vue 1.0.21、Ubuntu。
コンポーネントスクリプトタグの中にいるときは、ルーターを使用して次のようなことができます。
this.$router.Push('/url-path')
単なる単純なルーティング:
this.$router.Push('Home');
これも試すことができます...
router.Push({ name: 'myRoute' })
たとえば、注文のステータスを更新し、[編集]をクリックしてステータスを更新します。今度は、前のページに戻りたいと思います。
this.$router.Push('../index')
ここで../index
の部分は現在のルートから2回戻ることを意味し、それからindex
は行きたいビューの名前です。
一般にそのthis.$router.Push('your_path')
window.location = url;
'url'はリダイレクトしたいWeb URLです。
また、v-bindをテンプレートのように直接使うこともできます。
<a :href="'/path-to-route/' + IdVariable">
:
はv-bind
の省略形です。
あるページ/a
から別のページ/b
への永続的なリダイレクトが必要な場合
redirect:
に追加されたrouter.js
オプションを使用できます。たとえば、ユーザーがルートまたはベースURL /
を入力するときに常に別のページにリダイレクトする場合:
const router = new Router({
mode: "history",
base: process.env.BASE_URL,
routes: [
{
path: "/",
redirect: "/someOtherPage",
name: "home",
component: Home,
// () =>
// import(/* webpackChunkName: "home" */ "./views/pageView/home.vue"),
},
]
<div id="app">
<a :href="path" />Link</a>
</div>
<script>
new Vue({
el: '#app',
data: {
path: 'https://www.google.com/'
}
});
</script> enter code here
別のページにルーティングする場合this.$router.Push({path: '/pagename'})
params this.$router.Push({path: '/pagename', param: {param1: 'value1', param2: value2})
でルーティングしたい場合
parent.location.href = 'url'
で作業することもできます
Vueルート間を移動するroutes
好ましい方法はrouter.Push(location, onComplete?, onAbort?)
です
なぜなら
別のURLに移動するには、router.Pushを使用してください。このメソッドは新しいエントリを履歴スタックにプッシュするので、ユーザーがブラウザの戻るボタンをクリックすると、前のURLに移動します。
ドキュメントを読む HERE 。
外部URLに移動する
外部ルーティングにVueルーターを使用するのではなく、アプリ内のルーティングのみを処理します。これにはVanilla jsを使用してください。
window.location = 'http://www.example.com';
または
location.replace('http://example.com');
または
window.open('http://example.com');