Javascript 主干JS上的事件
我是个新手,我想知道一些事情 我看过一些教程,其中用户使用此代码解释事件Javascript 主干JS上的事件,javascript,events,backbone.js,triggers,Javascript,Events,Backbone.js,Triggers,我是个新手,我想知道一些事情 我看过一些教程,其中用户使用此代码解释事件 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 : 'un
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>
我的问题是,第一个示例如何使用事件“change”,而不管怎样,它都不会被触发。它不会在代码中的任何地方使用“change”。我知道它使用了函数someChange,但是当代码中没有触发或“使用”事件时,它现在如何“激活”呢
如果你不理解这个问题,我很抱歉。不知道如何解释这个问题。我认为您需要花一点时间阅读主干文档(不应超过1小时)。在编写主干应用程序时,有一个预定义事件列表,其中包括“更改”、“重置”等 关于您的特定示例,
Backbone.Events
是在主干内使用的组件,用于提供具有事件发射功能的任何对象/类<代码>主干。模型当然包括主干。事件
您的第一个代码片段显示了如何侦听主干.Modelchange
事件以执行某些操作,而第二个代码片段将Backbone.Events
混合到JS对象中,以便能够从中触发
这就是主干网的优点,在模型、视图和集合中使用相同的方法(
on
、off
、listenTo
),因为它们都继承Backbone.Events。一旦你掌握了它,一切都是摇滚乐。:) 对主干模型属性的更改会自动触发更改事件-事件通常采用change:attribute的形式,其中attribute是questionAh okey中属性的实际属性名称。但事件名称的名称“更改”并不重要?比如说,我将“change”改为“event”,然后如果我想在title属性的更改上发生什么事情,我会使用event:title?
`var object = {};
_.extend(object, Backbone.Events); object.on("alert", function(msg) {
alert("Triggered " + msg); });
object.trigger("alert", "an event");