Простые события backbone.js ошибка - PullRequest
0 голосов
/ 23 марта 2012

При запуске этого файла index.html я получаю следующую ошибку: «Uncaught SyntaxError: Unexpected token:», ссылаясь на

events: {
            "click #add-friend": "showPrompt",
        },

Это конкретно относится к «:» здесь «нажмите # добавить друга»: «showPrompt» Больше контекста ниже. Любой совет будет оценен.

(function ($) {

    Friend = Backbone.Model.extend({
        // create a model to to hold friend attribute
        name: null
    });

    Friends = Backbone.Collection.extend({
        // this is our friends collection and holds out Friend models
        initialize: function(models, options) {
            this.bind("add", options.view.addFriendLi);
            // listens for "add" and calls a view function if so
        }
    });

    AppView = Backbone.View.extend({
        el: $("body"),
        initialize: function () {
            this.friends = new Friends(null, {view: this});
        // creates a new friends collection when the view is initialized
        // pass it a reference to the view to create a connection between the two
        events: {
            "click #add-friend": "showPrompt"
        },
        showPrompt: function () {
            var friend_name = prompt("Who is your friend?");
            var friend_model = new Friend({name:friend_name});
            // adds a new friend model to out Friend collection
            this.friends.add(friend_model);
        },
        addFriendLi: function (model) {
            // the parameter passed is a reference to the model that was added
            $("#friends_list").append("<li>" + model.get('name') + "</li>");
        }
    });
    var appview = new AppView;
})(jQuery);

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

В конце у вас есть лишняя запятая:

"click #add-friend": "showPrompt" // remove the comma

Вам также не хватает закрытия } в конце метода инициализации:

initialize: function () {
    this.friends = new Friends(null, {view: this});
}, // add a "}," here

events: {
   "click #add-friend": "showPrompt"
},
2 голосов
/ 23 марта 2012

Вам не хватает "}" для вашей функции "initialize".Без этого он думает, что маркер «события» начинает новое утверждение.Это все хорошо до тех пор, пока двоеточие после строковой константы не является синтаксически неправильным в этом контексте.

О, и вам также понадобится запятая там, чтобы отделить значение свойства "initialize" отсвойство "events".

1 голос
/ 23 марта 2012

Удалить запятую после значения свойства:

events: {
     "click #add-friend": "showPrompt" // <-- comma removed!
},
...