Làm cách nào tôi có thể tìm nạp các tham số truy vấn trong Vue.js?
Ví dụ http://somesite.com?test=yay
.
Không thể tìm cách tìm nạp hoặc tôi cần sử dụng JS thuần túy hoặc một số thư viện cho việc này?
Làm cách nào tôi có thể tìm nạp các tham số truy vấn trong Vue.js?
Ví dụ http://somesite.com?test=yay
.
Không thể tìm cách tìm nạp hoặc tôi cần sử dụng JS thuần túy hoặc một số thư viện cho việc này?
Câu trả lời:
Theo các tài liệu của đối tượng tuyến đường , bạn có quyền truy cập vào một $route
đối tượng từ các thành phần của mình, điều này phơi bày những gì bạn cần. Trong trường hợp này
//from your component
console.log(this.$route.query.test) // outputs 'yay'
vue-router
hơn thì đây thực sự sẽ là một bản sao, vì anh ta sẽ cần sử dụng các phương thức JS tiêu chuẩn.
vue-router
thẻ và thêm nó.
return next({ name: 'login', query:{param1: "foo" }, });
không hoạt động. bên trong thành phần đăng nhập prop param1
không xác định.
Nếu không có vue-route, hãy tách URL
var vm = new Vue({
....
created()
{
let uri = window.location.href.split('?');
if (uri.length == 2)
{
let vars = uri[1].split('&');
let getVars = {};
let tmp = '';
vars.forEach(function(v){
tmp = v.split('=');
if(tmp.length == 2)
getVars[tmp[0]] = tmp[1];
});
console.log(getVars);
// do
}
},
updated(){
},
Một giải pháp khác https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkEuityUtils/search :
var vm = new Vue({
....
created()
{
let uri = window.location.search.substring(1);
let params = new URLSearchParams(uri);
console.log(params.get("var_name"));
},
updated(){
},
location.href
tự chia tay khi có location.search
sẵn? developer.mozilla.org/en-US/docs/Web/API/, vd: var querypairs = window.location.search.substr(1).split('&');
Cũng chia tách các cặp tên-giá trị truy vấn bởi '=' sẽ không luôn hoạt động vì bạn cũng có thể chuyển các tham số truy vấn có tên mà không có giá trị; ví dụ: ?par1=15&par2
Mã của bạn bây giờ sẽ đưa ra một ngoại lệ trên par2 khi chia tách bởi '=' sẽ dẫn đến tmp chỉ có 1 phần tử.
undefined
cho getVars['par2']
.
Câu trả lời chi tiết hơn để giúp những người mới của VueJS:
Và bản thân mã:
<script src="https://unpkg.com/vue-router"></script>
var router = new VueRouter({
mode: 'history',
routes: []
});
var vm = new Vue({
router,
el: '#app',
mounted: function() {
q = this.$route.query.q
console.log(q)
},
});
<script src="https://unpkg.com/vue-router"></script>
new Vue({ router, ... })
không phải là cú pháp hợp lệ.
Một cách khác (giả sử bạn đang sử dụng vue-router
), là ánh xạ thông số truy vấn tới chỗ dựa trong bộ định tuyến của bạn. Sau đó, bạn có thể coi nó như bất kỳ chỗ dựa nào khác trong mã thành phần của bạn. Ví dụ: thêm tuyến đường này;
{
path: '/mypage',
name: 'mypage',
component: MyPage,
props: (route) => ({ foo: route.query.foo })
}
Sau đó, trong thành phần của bạn, bạn có thể thêm prop như bình thường;
props: {
foo: {
type: String,
default: null
}
},
Sau đó, nó sẽ có sẵn this.foo
và bạn có thể làm bất cứ điều gì bạn muốn với nó (như đặt một người theo dõi, v.v.)
Kể từ ngày này, cách chính xác theo các tài liệu định tuyến động là:
this.$route.params.yourProperty
thay vì
this.$route.query.yourProperty
query
để lấy các truy vấn từ URL. Từ các tài liệu: Ngoài $ route.params, đối tượng $ route còn hiển thị các thông tin hữu ích khác như $ route.query (nếu có một truy vấn trong URL)
Bạn có thể sử dụng vue-router. Tôi có một ví dụ dưới đây:
url: www.example.com?name=john&lastName=doe
new Vue({
el: "#app",
data: {
name: '',
lastName: ''
},
beforeRouteEnter(to, from, next) {
if(Object.keys(to.query).length !== 0) { //if the url has query (?query)
next(vm => {
vm.name = to.query.name
vm.lastName = to.query.lastName
})
}
next()
}
})
Lưu ý: Trong beforeRouteEnter
chức năng, chúng tôi không thể truy cập thuộc tính của thành phần như: this.propertyName
Vững lý do tại sao tôi có vượt qua vm
để next
function.It là cách recommented để truy cập các vue instance.Actually sự vm
nó là viết tắt ví dụ vue
Bạn có thể nhận được bằng cách sử dụng chức năng này.
console.log(this.$route.query.test)
Nếu máy chủ của bạn sử dụng php, bạn có thể làm điều này:
const from = '<?php echo $_GET["from"];?>';
Chỉ cần làm việc.