Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 主干网中自定义事件的优势是什么?_Javascript_Backbone.js_Backbone Events - Fatal编程技术网

Javascript 主干网中自定义事件的优势是什么?

Javascript 主干网中自定义事件的优势是什么?,javascript,backbone.js,backbone-events,Javascript,Backbone.js,Backbone Events,我了解定制事件在主干网中的工作方式以及如何触发它们,但我很难理解何时使用它们以及它们在直接调用函数上的用途 e、 g 如果我没有弄错的话,doSomething方法可以通过在其他方法中使用this.model.trigger(“mycustomevent”)来调用,但也可以通过this.doSomething() 在视图之外,可以使用类似的方法调用它 var myview = new MyView({model:somemodel}); myview.model.trigger("custom

我了解定制事件在主干网中的工作方式以及如何触发它们,但我很难理解何时使用它们以及它们在直接调用函数上的用途

e、 g

如果我没有弄错的话,doSomething方法可以通过在其他方法中使用
this.model.trigger(“mycustomevent”)
来调用,但也可以通过
this.doSomething()

在视图之外,可以使用类似的方法调用它

var myview = new MyView({model:somemodel});

myview.model.trigger("customevent");

myview.doSomething();

我感到困惑的是,为什么不放弃定制事件,在需要时直接调用该方法呢?任何使用示例都将不胜感激

您可能希望在代码的不同位置添加多个处理程序,例如:

this.model.on("mycustomevent", this.doSomething, this);

// ... and somewhere else you add an anonymous function
this.model.on("mycustomevent", function() {
    console.log('do something');
});
然后,当您触发事件时,它将执行所有处理程序。您还可以使用解除绑定/管理单个或多个处理程序


如果您想了解事件模式(也称为发布/订阅等)的一般解释,您可能应该查找更深入的文章或书籍。

您可能希望在代码中的不同位置添加多个处理程序,例如:

this.model.on("mycustomevent", this.doSomething, this);

// ... and somewhere else you add an anonymous function
this.model.on("mycustomevent", function() {
    console.log('do something');
});
然后,当您触发事件时,它将执行所有处理程序。您还可以使用解除绑定/管理单个或多个处理程序


如果您想了解事件模式的一般解释(也称为发布/订阅等),您可能应该寻找更深入的文章或书籍。

对于主干,最好的示例是更改模型的属性。使用函数时,您必须执行以下操作

$( '#someUI' ).click( function {
   // update the model property
   myModel.someProperty = 'somethingDifferent';
   // update any ui that depends on this properties value
   $( '#uiThatDisplaysModelData' ).find( 'someSelector' ).html( 'somethingDifferent' );
   // save the model change to the server
   $.ajax( {
      url: 'somesaveurl',
      data: { someProperty: 'somethingDifferent' }
      success: callback
   } );
} );
然后对每个属性更改在代码中重复这些步骤

通过主干网和少量设置,同样的事情也可以通过以下方式完成:

myModel.set( 'property', 'somethingDifferent' );
这是因为我们将处理程序附加到此模型的
change
change:property
事件。这些是由主干为模型自动创建的自定义事件。因此,只要代码的任何部分操作模型,DOM就会自动更新和保存。我们还可以将输入验证或任何我们想要的东西绑定到这些自定义事件

它基本上只是将观察者模式应用于您的应用程序,其中事件属于可观察的对象,而处理程序属于其观察者


对于主干,最好的例子是更改模型的属性。使用函数时,您必须执行以下操作

$( '#someUI' ).click( function {
   // update the model property
   myModel.someProperty = 'somethingDifferent';
   // update any ui that depends on this properties value
   $( '#uiThatDisplaysModelData' ).find( 'someSelector' ).html( 'somethingDifferent' );
   // save the model change to the server
   $.ajax( {
      url: 'somesaveurl',
      data: { someProperty: 'somethingDifferent' }
      success: callback
   } );
} );
然后对每个属性更改在代码中重复这些步骤

通过主干网和少量设置,同样的事情也可以通过以下方式完成:

myModel.set( 'property', 'somethingDifferent' );
这是因为我们将处理程序附加到此模型的
change
change:property
事件。这些是由主干为模型自动创建的自定义事件。因此,只要代码的任何部分操作模型,DOM就会自动更新和保存。我们还可以将输入验证或任何我们想要的东西绑定到这些自定义事件

它基本上只是将观察者模式应用于您的应用程序,其中事件属于可观察的对象,而处理程序属于其观察者

可能重复的可能重复的