关于backbone.js与JQuery / JQueryUI集成的问题

时间:2013-09-09 09:36:31

标签: jquery backbone.js

我刚刚开始使用骨干(使用模块的requirejs)。

在我看来,jQuery可以做什么和Backbone可以做什么之间存在重叠。这让我想知道我应该使用哪个选项。

例如,我可以通过以下方式收听:

$('selector').click( function(event) {...

var myView = Backbone.View.extend({
  events: {
    "click selector": "onClickSelector",
  }, ...

1)我应该使用上述哪个选项?

Jquery支持我不知道如何使用Backbone管理的东西。例如,JqueryUI的自动完成功能:

$('selector').autocomplete({ ...

2)如何使用骨干网实现自动完成功能?在呈现视图onPostRender()后,我是否只是在方法中完成所有这些?

我发现很多示例似乎都在向View对象添加新成员。例如:

var myView = Backbone.View.extend({
  events: {
    deletePressed: function() { ... },
    submitPressed: function() { ... },
    editPressed: function() { ... },
  }, ...

如果这些事件的功能很简单,我可以看到这是有道理的,但是,如果View对象的行为更加复杂,那么它将变得非常复杂。

3)我应该在匿名函数中实现复杂行为还是应该调用命名函数?

4)类似于上面的内容,如果我有许多事件使用的公共函数(例如resetForm()),那么这应该被声明为View的成员名称功能?

我目前将jquery对象存储为模块中的变量

var $mySelector = $(selector);

或者我可以将它们附加到视图

var myView = Backbone.View.extend({
  initialize: {
    this.mySelector = $(selector);
  }, ...

5)我应该让我的JQuery对象成为View的一部分还是AMD模块的一部分:

1 个答案:

答案 0 :(得分:1)

以下是您的问题的答案:

1:在视图中使用events属性的第二个选项。注意:您可以使用此方法将事件绑定到您在视图中指定为el的元素的子元素。

2:是的,你可以在onPostRender()中完成。

3:如果您希望重复使用handleDeletePressed()handleSubmitPressed()handleEditPressed(),或者他们必须做很多事情我建议最好创建命名函数并将其指定为:

events: {
    deletePressed: 'handleDeletePressed',
    submitPressed: 'handleSubmitPressed',
    editPressed: 'handleEditPressed',
  }

4:您可以将其声明为视图成员。

5:在视图中的任何实例中,您都可以使用this.$('selector')来获取jQuery对象。如果你愿意,你也可以创建jQuery对象。