Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干JS上的事件_Javascript_Events_Backbone.js_Triggers - Fatal编程技术网

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
是在主干内使用的组件,用于提供具有事件发射功能的任何对象/类<代码>主干。模型当然包括
主干。事件

您的第一个代码片段显示了如何侦听主干.Model
change
事件以执行某些操作,而第二个代码片段将
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");