Javascript 主干视图+;事件
如果单击按钮或触发事件,为什么没有触发事件? 我错过了什么Javascript 主干视图+;事件,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,如果单击按钮或触发事件,为什么没有触发事件? 我错过了什么 <html> <head><script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="underscore.js" type="text/javascript"></script> <script src="backbone.js" type="text/javascr
<html>
<head><script src="jquery-1.7.1.js" type="text/javascript"></script>
<script src="underscore.js" type="text/javascript"></script>
<script src="backbone.js" type="text/javascript"></script>
<script type="text/javascript">
var SearchView = Backbone.View.extend({
events: {
"click #testid": 'savenow'
},
initialize: function(){
console.log("init");
console.log($('testid'));
},
savenow: function(){
console.log("test save method");
}
});
// The initialize function is always called when instantiating a Backbone View.
// Consider it the constructor of the class.
var search_view = new SearchView({ el: $('#testid') });
search_view.trigger("savenow", "test");
</script></head>
<body>
<h1>test</h1>
<input id="testid" type="button" value="testbutton" />
</body></html>
var SearchView=Backbone.View.extend({
活动:{
“单击测试”:“立即保存”
},
初始化:函数(){
console.log(“init”);
log($('testid');
},
savenow:function(){
日志(“测试保存方法”);
}
});
//实例化主干视图时,始终调用initialize函数。
/将其视为类的构造函数。
var search_view=newsearchview({el:$('#testid')});
search_view.trigger(“savenow”、“test”);
测试
上面的例子几乎是复制的,但在我的例子中它不起作用
events: {
"click": 'savenow'
},
给你!不带选择器的事件类型在视图el
本身上添加事件侦听器
给你!不带选择器的事件类型在视图el
本身上添加事件侦听器
给你!不带选择器的事件类型在视图el
本身上添加事件侦听器
给你!不带选择器的事件类型将事件侦听器添加到视图el
本身上。您将el设置为#testid-然后,您告诉它在配置事件时查看#testid中的#testid:as
events:{
"click #testid":"savenow"
}
通过将事件对象更改为
events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)
或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我假定它包含文本输入字段或其他设置,以及按钮)。您将el设置为testid-然后,当您配置事件时,您告诉它在testid中查找testid:as
events:{
"click #testid":"savenow"
}
通过将事件对象更改为
events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)
或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我假定它包含文本输入字段或其他设置,以及按钮)。您将el设置为testid-然后,当您配置事件时,您告诉它在testid中查找testid:as
events:{
"click #testid":"savenow"
}
通过将事件对象更改为
events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)
或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我假定它包含文本输入字段或其他设置,以及按钮)。您将el设置为testid-然后,当您配置事件时,您告诉它在testid中查找testid:as
events:{
"click #testid":"savenow"
}
通过将事件对象更改为
events:{
"click":"savenow"
}
您只是针对视图的所有el(在本例中为#testid)
或者,您可以将事件配置保持原样,并将el更改为搜索面板的body或parent div(我认为它包含文本输入字段或其他设置以及按钮)。您有一些问题。正如其他答案所建议的那样,
事件
对象需要更改。默认情况下,这会将单击事件绑定到#testid
,因为这是视图的el
。关于这个主题的一些阅读
第二个问题是-在加载DOM
之前加载代码。这意味着您的视图无法绑定到testid
元素。要解决这个问题,您需要将代码包装到函数中
<script type="text/template">
$(function() {
/* All your code
...
...
*/
});
工作代码示例:
<html>
<head>
<script src="jquery-1.7.1.js" type="text/javascript"></script>
<script src="underscore.js" type="text/javascript"></script>
<script src="backbone.js" type="text/javascript"></script>
<script type="text/javascript">
// Run this block of code when the DOM is loaded.
$(function() {
var SearchView = Backbone.View.extend({
// Listen for click events on this view's element - '#testid'.
events: {
"click": 'savenow'
},
initialize: function(){
console.log("init");
// listen for the savenow event triggered by this view.
this.listenTo(this,'savenow',this.savenow);
},
savenow: function(){
console.log("test save method");
}
});
var search_view = new SearchView({ el: '#testid' });
search_view.trigger("savenow", "test");
});
</script>
</head>
<body>
<h1>test</h1>
<input id="testid" type="button" value="testbutton" />
</body>
</html>
//加载DOM时运行此代码块。
$(函数(){
var SearchView=Backbone.View.extend({
//侦听此视图元素-#testid上的单击事件。
活动:{
“单击”:“立即保存”
},
初始化:函数(){
console.log(“init”);
//侦听此视图触发的savenow事件。
this.listenTo(this,'savenow',this.savenow);
},
savenow:function(){
日志(“测试保存方法”);
}
});
var search_view=newsearchview({el:'#testid'});
search_view.trigger(“savenow”、“test”);
});
测试
您有一些问题。正如其他答案所建议的那样,事件
对象需要更改。默认情况下,这会将单击事件绑定到#testid
,因为这是视图的el
。关于这个主题的一些阅读
第二个问题是-在加载DOM
之前加载代码。这意味着您的视图无法绑定到testid
元素。要解决这个问题,您需要将代码包装到函数中
<script type="text/template">
$(function() {
/* All your code
...
...
*/
});
工作代码示例:
<html>
<head>
<script src="jquery-1.7.1.js" type="text/javascript"></script>
<script src="underscore.js" type="text/javascript"></script>
<script src="backbone.js" type="text/javascript"></script>
<script type="text/javascript">
// Run this block of code when the DOM is loaded.
$(function() {
var SearchView = Backbone.View.extend({
// Listen for click events on this view's element - '#testid'.
events: {
"click": 'savenow'
},
initialize: function(){
console.log("init");
// listen for the savenow event triggered by this view.
this.listenTo(this,'savenow',this.savenow);
},
savenow: function(){
console.log("test save method");
}
});
var search_view = new SearchView({ el: '#testid' });
search_view.trigger("savenow", "test");
});
</script>
</head>
<body>
<h1>test</h1>
<input id="testid" type="button" value="testbutton" />
</body>
</html>
//加载DOM时运行此代码块。
$(函数(){
var SearchView=Backbone.View.extend({
//侦听此视图元素-#testid上的单击事件。
活动:{
“单击”:“立即保存”
},
初始化:函数(){
console.log(“init”);
//侦听此视图触发的savenow事件。
this.listenTo(this,'savenow',this.savenow);
},
savenow:function(){
日志(“测试保存方法”);
}
});
var search_view=newsearchview({el:'#testid'});
search_view.trigger(“savenow”、“test”);
});
测试
您有一些问题。正如其他答案所建议的那样,事件
对象需要更改。默认情况下,这会将单击事件绑定到#testid
,因为这是视图的el
。关于这个主题的一些阅读
第二个问题是-在加载DOM
之前加载代码。这意味着您的视图无法绑定到testid