骨干监听器不开火
Backbone listenTo doesnt firing
我是新的骨干,并试图运行以下代码。但我还是不明白。它不能正常工作。更清楚的是,当我创建集合时,listenTo没有捕捉到create事件。
我的代码
var levelIndex=0;
var app = {};
$(function(){
$('.datepicker').datepicker({
format: 'dd/mm/yyyy',
startDate: '-3d'
});
//model
app.Level = Backbone.Model.extend({
defaults: {
levelIndex:-1
}
});
//collection
app.Levels= Backbone.Collection.extend({
model: app.Level,
url:'#'
});
//views
app.LevelView = Backbone.View.extend({
events: {
'click .addItems': 'addItems',
'click .clearItems': 'clearItems',
'click .removeLevel':'removeLevel'
},
addItems: function () {
// add items
},
clearItems:function(){
//
},
removeLevel:function(){
//
},
tagName: 'div',
className: 'level active',
template: _.template($('#levelTemplate').html()),
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
//levels view
app.LevelsView = Backbone.View.extend({
events: {
'click .add': 'addLevel'
},
addLevel: function( e ) {
e.preventDefault();
console.log('inside add level function');
var formData = {};
formData['levelIndex']=levelIndex++;
this.collection.create( formData );
console.log('after creating collection');
},
el: '#levels',
initialize: function() {
this.collection=new app.Levels(new app.Level());
//following line of code doesnt work properly
this.listenTo( this.collection, 'create', this.renderLevel );
},
// render levels view by rendering each level in its collection
render: function () {
this.collection.each(function (item) {
this.renderLevel(item);
}, this);
},
// render a level by creating a LevelView and appending the
// element it renders to the levels' element
renderLevel: function (item) {
var levelView = new app.LevelView({
model: item
});
this.$el.append(levelView.render().el);
}
});
new app.LevelsView();
});
集合和模型上没有事件create
。在您的案例中,您希望使用事件add
,当模型添加到集合时触发。但是你会错过一个模型添加,因为你在开始听之前添加了第一个模型。
http://backbonejs.org/Events-catalog
关于Collection.create()
:
创建模型将导致立即在集合上触发"添加"事件,当新模型被发送到服务器时触发"请求"事件,以及一旦服务器响应成功创建模型时触发"同步"事件。如果您想在将新模型添加到集合之前等待服务器,则传递{wait: true}。
相关文章:
- Javascript全局onclick监听器
- 如何在td元素中添加监听器
- 监听器必须是一个函数
- 点击不'似乎没有开火
- 强制 $scope.$watch 只开火一次
- extjs关闭事件不'不要开火
- Safari扩展中的注入脚本;不要在Youtube上开火
- 我如何获得这个javascript来计算两个监听器字段作为价格
- KeyDown不会'按住时不能连续开火
- Raphael JS事件未开火
- 在下拉式javascript事件监听器中选择时触发事件
- JQuery窗口调整大小;不要开火
- 谷歌地球回调未开火
- 在控制器中创建StandardListItem并在赢得的项目上按下事件'不要开火
- document.addEventListener和window.addEvent监听器之间的区别
- 提高敲除自定义绑定的效率(经常开火)
- 流星:onhashchange不会开火
- Onicecandidate 不会在第二台 PC 上开火
- 如何在音频元素上使用React媒体合成事件监听器
- 骨干监听器不开火