Невозможно запустить магистральные события JS с помощью веб-сайта MVC3 (Complete Beginner). - PullRequest
1 голос
/ 30 декабря 2011

В рамках подготовки к собеседованию меня попросили прочитать мои навыки MVC, а также JavaScript, который, я считаю, будет включать в себя Backbone и Spine Frame Works.

Я читал много сайтов, но всеРазные способы были сделаны, и все же я не могу понять простой пример.Итак, у меня есть следующее ...

Простой файл cshtml с div и кнопкой ...

<div id="AuthorSection">
    <button id="sayhello">Add Author</button>
</div>

и файл Author JS, который предупреждает меня, когда оноказано, но не тогда, когда событие было запущено ...

(function ($) {
Authors = Backbone.View.extend({

    el: $('#AuthorSection'),
    events: { 'click #AddAuthor': 'AddNewAuthor'
    },

    initialize: function () {
        _.bindAll(this, 'render', 'AddNewAuthor');
        this.render();
    },

    render: function () {
    },

    AddNewAuthor: function (e) {
        alert('Adding Author');
    }
});

var Authors = new Authors;

})(jQuery);

Любая помощь будет признательна для кого-то очень плохо знакомого с этим типом работы ....

Спасибо

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Если ваш код выполняется после загрузки DOM, он должен работать, как показано в этой скрипте http://jsfiddle.net/VcHn8/

С другой стороны, если вы выполняете свой код до загрузки DOM, $ ('#AuthorSection ') неизвестен в то время.Удалите объявление el в вашем представлении и замените

var Authors = new Authors;

на

$(function(){
    new Authors( {el: $('#AuthorSection')} );
});

См. http://jsfiddle.net/C5HXH/1/

И вы должны дать своим переменным имя, отличное от имениваш конструктор

0 голосов
/ 30 декабря 2011

Похоже, у вас неправильный селектор в хэше событий.

id кнопки - sayhello, поэтому вам нужно обновить хэш событий следующим образом:

events: { 'click #sayhello': 'AddNewAuthor'
...