Backbone JS上的活动

时间:2014-10-15 15:38:00

标签: javascript events backbone.js triggers

我是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 但是当代码中没有触发或“使用”事件时,它现在如何“激活”。

如果你不理解这个问题,我很抱歉。不知道如何解释这个问题。

1 个答案:

答案 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的优点在于,模型,视图,集合中使用了相同的方法(onofflistenTo),因为它们都继承了Backbone。活动。一旦掌握了它,它就会摇滚。 :)