George Reith
George Reith

Reputation: 13476

IE8: Expected identifier, string or number

I am getting an error Expected identifier, string or number in IE8 referring to line 17 character 21 of the following code:

define(
    [
        "underscore"
    ,   "Backbone"
    ,   "text!assetListingTemplate"
    ]
,   function(_, Backbone, template) {
        "use strict";

        var tmpl = _.template(template);
        var AssetListing = Backbone.View.extend({
            tagName: "li"

        ,   attributes: function() {
                return {
                    id: this.model.cid
                ,   class: this.model.get("type")
                };
            }

        ,   render: function() {
                this.el.innerHTML = tmpl(this.model.attributes);
                return this.el;
            }
        });

        return AssetListing;
    }
);

Which is:

,   class: this.model.get("type")

This error is usually due to a trailing coma in an Object or similar minor formatting issues that IE does not handle gracefully. Perhaps I have been staring at code for too long but I can't see any such issues here, I have even JSLinted it and it failed to find any issues except for not agreeing with my style.

The error is not this.model either as it still occurs if I replace all instances of it for regular strings.

Can any eagle eyes spot what is going wrong here?

Upvotes: 4

Views: 2309

Answers (1)

Kevin Bowersox
Kevin Bowersox

Reputation: 94499

It doesn't like class since class is a future reserved word as define in ECMAScript2

Put class in quotes "class"

attributes: function() {
                return {
                    id: this.model.cid
                ,   "class": this.model.get("type")
                };
            }

Upvotes: 4

Related Questions