不能使用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);
对于这种工作非常新的人,任何帮助都将受到赞赏....
谢谢
如果您的代码在DOM加载后执行,它应该像下面演示的那样工作http://jsfiddle.net/VcHn8/
另一方面,如果在加载DOM之前执行代码,则$('#AuthorSection')当时是未知的。删除视图中的el声明并替换
var Authors = new Authors;
$(function(){
new Authors( {el: $('#AuthorSection')} );
});
见http://jsfiddle.net/C5HXH/1/
你应该用不同于构造函数的名字来命名变量
看起来你在事件散列中有一个错误的选择器
按钮的id
是sayhello
,所以你需要像这样更新你的事件散列:
events: { 'click #sayhello': 'AddNewAuthor'