不能使用MVC3网站(完全初学者)剃刀发射骨干JS事件

本文关键字:发射 剃刀 事件 JS 初学者 MVC3 网站 不能 | 更新日期: 2023-09-27 18:19:09

作为面试准备的一部分,我被要求阅读我的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);

对于这种工作非常新的人,任何帮助都将受到赞赏....

谢谢

不能使用MVC3网站(完全初学者)剃刀发射骨干JS事件

如果您的代码在DOM加载后执行,它应该像下面演示的那样工作http://jsfiddle.net/VcHn8/

另一方面,如果在加载DOM之前执行代码,则$('#AuthorSection')当时是未知的。删除视图中的el声明并替换

var Authors = new Authors;

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

见http://jsfiddle.net/C5HXH/1/

你应该用不同于构造函数的名字来命名变量

看起来你在事件散列中有一个错误的选择器

按钮的idsayhello,所以你需要像这样更新你的事件散列:

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