我正在做媒體查詢Enquire.js和Vue.js。當我手動調整瀏覽器窗口的大小時,這一切都非常有效。但是,我無法匹配文檔加載,這是在Chrome訪問移動電話上的網站時切換Chrome切換設備模式時最明顯的一種行爲。我使用"Match & Unmatch Example"進行了檢查,並且在所述模式或使用移動電話訪問時,按預期工作。我想知道Vue.js和Enquire.js之間存在某種不兼容性,還是我做錯了什麼?Enquire.js最初不匹配,只有調整大小
邏輯的媒體查詢是對我的VUE實例的準備掛鉤:
ready:
function() {
var self = this;
enquire.register("screen and (max-width: 400px)", {
match: function() {
self.displayIsLarge = false;
self.displayIsSmall = true;
},
unmatch: function() {
self.displayIsLarge = true;
self.displayIsSmall = false;
}
})
);
在我VUE例如,我有如下數據屬性:
var menu = new Vue({
el: '#app',
data: {
displayIsLarge: true,
displayIsSmall: false,
在我的html文件,我使用v-if="displayIsSmall"
和v-if="displayIsLarge"
根據瀏覽器的大小隱藏/顯示元素。 JsdFiddle here。
它來到我的腦海中的同時,我也許能解決這個問題,與Setup
回調,或許還有一個條件,是這樣的:
enquire.register("screen and (max-width: 400px)", {
setup: function() {
if (this.match) {
self.displayIsSmall = true;
}
else {
self.displayIsSmall = false;
}
},
match: function() {
self.displayIsLarge = false;
self.displayIsSmall = true;
},
unmatch: function() {
self.displayIsLarge = true;
self.displayIsSmall = false;
}
})
預期這是行不通的。我錯過了什麼? JsdFiddle here。
UPDATE
沒有運氣或者與Vue公司的beforeCompile或created掛鉤(而不是ready
)。
你發佈的第一個小提琴正在爲我工作。你有什麼問題?當JSFiddle的窗格寬度爲400px時,它會切換。其實他們都在爲我工作 – Jeff
@Jeff問題是它不匹配頁面加載時的文檔大小匹配/不匹配。這意味着在上面的JsFiddles中,只有當我們手動調整它的大小時,它才匹配或不匹配窗格大小。 – pierrebonbon
'不匹配'只發生在從'match'到'unmatch'的情況下,如果以'unmatch'開頭,則不會發生。您應該首先訪問此移動設備,並將「isSmallScreen」設置爲「true」,然後更改您查詢到'min-width'然後切換它們。 –