使用Enquire.js和Vue.js查询浏览器的大小

时间:2016-02-25 16:08:34

标签: javascript vue.js enquire.js

我正在使用Enquire.js Vue.js 来查询浏览器的大小并相应地更新两个数据属性。所以,如果我这样做:

ready: function() {
    // Listen for changes in the browser's size
    window.addEventListener("resize",
    enquire.register("screen and (max-width:400px)", {
        match: function() {
            this.displayIsLarge = false;
            this.displayIsSmall = true;
            console.log("the screen is now small");
        },
        unmatch: function() {
            this.displayIsLarge = true;
            this.displayIsSmall = false;
            console.log("the screen is now large");
        }
    })
    );
}

它将在控制台中输出正确的消息(jsfiddle here),但它不会更改displayIsLargedisplayIsSmall的值。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

问题在于this的范围。完整的工作代码是:

ready: function() {
    var self = this;
    // Listen for changes in the browser's size
    window.addEventListener("resize",
    enquire.register("screen and (max-width:400px)", {
        match: function() {
            self.displayIsSmall = true;
            self.displayIsLarge = false;
            console.log("the screen is now small");
        },
        unmatch: function() {
            self.displayIsLarge = true;
            self.displayIsSmall = false;
            console.log("the screen is now large");
        }
    })
    );
}

Jsfiddle here