Internet Explorer 字符串比较

Internet Explorer string comparison

此功能在 Firefox 中正常工作,但在 IE 11 中不正常。我认为罪魁祸首是:

event = String(data.model.attributes.eventToRaise);

我通过一堆日志记录(我在此处删除了它以供演示)知道我正确地进入了第一个 else 分支,但是与 'AAA' 和 'BBB' 的比较是'在 IE 中无法正常工作。在 Firefox 中记录 'event' 的内容会显示一个字符串,但在 IE 控制台中它是一个指针。我尝试了一些不同的东西(.toString()、"" + 事件),所有这些都在 FF 中工作但在 IE 中没有。

上下文是 Backbone 和 Marionette,这个函数在不同地方的点击事件上被调用,代码应该确定哪个事件发起调用。

       showPanel: function (data) {
            event = String(data.model.attributes.eventToRaise);
            if (event === this.lastEvent) {
                //do something
            }
            else {
                var view = NaN;

                if (event === 'AAA') {
                    //whatever
                }
                else if (event === 'BBB') {
                    //whatever else
                }

            this.lastEvent = event;
        }

编辑:'var event = String(data.model.attributes.eventToRaise);' 解决了问题

您可以尝试以下方法:

showPanel: function (data) {
    event = new String(data.model.attributes.eventToRaise);
    if (event === this.lastEvent) {
        //do something
    }
    else {
        var view = NaN;

        if (event.indexOf("AAA")) {
            //whatever
        }
        else if (event.indexOf("BBB")) {
            //whatever else
        }

    this.lastEvent = event;
}
var event = data.model.attributes.eventToRaise;

解决了问题。