我是Backbone的新手,我想知道一些事情。
我见过一些教程,用户使用此代码来解释事件。
var ImageModel = Backbone.Model.extend({ initialize: function(){
this.on('change',this.someChange,this); //when some property in this object has changed, run this.someChange() function },
defaults : { title : 'untitled',
description : 'no description available',
owner : 'anonymous',
date : 'no date supplied' },
someChange: function(model,options){ alert(‘something has changed’);
}
});
var photo = new ImageModel({title:’awesome image’}); //create new instance
photo.set(‘title’,’really awesome indeed’); //change the title attribute, this will trigger ‘change’ event
photo.set({title:’well i agree’},{agree: ‘yep’}); //alternative way to change model attribute with optional option passed, this will also trigger change event. </p>
在其他一些例子中,我看到人们使用触发器来激活事件。
例如
`var object = {};
_.extend(object, Backbone.Events); object.on("alert", function(msg) {
alert("Triggered " + msg); });
object.trigger("alert", "an event");
我的问题是,第一个示例如何使用事件“更改”,而不会被触发。它不会在代码中的任何位置使用“更改”。我知道它使用函数 someChange 但是当代码中没有触发或“使用”事件时,它现在如何“激活”。
如果你不理解这个问题,我很抱歉。不知道如何解释这个问题。
答案 0 :(得分:0)
我认为您需要花一点时间阅读Backbone文档(不应该花费您超过1小时)。在编写Backbone应用程序时,您将使用很多预定义事件列表:&#34;更改&#34;,&#34;重置&#34;等等。
http://backbonejs.org/#Events-catalog
关于您的特定示例,Backbone.Events
是Backbone中用于为任何对象/类提供事件发射功能的组件。 Backbone.Model
当然包括 Backbone.Events
。
您的第一个代码段显示了如何监听Backbone.Model change
事件以执行某些操作,而第二个代码段将Backbone.Events
混合到JS对象中以便能够从中触发。
Backbone的优点在于,模型,视图,集合中使用了相同的方法(on
,off
,listenTo
),因为它们都继承了Backbone。活动。一旦掌握了它,它就会摇滚。 :)