我刚刚开始使用骨干(使用模块的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模块的一部分:
答案 0 :(得分:1)
以下是您的问题的答案:
1:在视图中使用events
属性的第二个选项。注意:您可以使用此方法将事件绑定到您在视图中指定为el
的元素的子元素。
2:是的,你可以在onPostRender()
中完成。
3:如果您希望重复使用handleDeletePressed()
,handleSubmitPressed()
和handleEditPressed()
,或者他们必须做很多事情我建议最好创建命名函数并将其指定为:
events: {
deletePressed: 'handleDeletePressed',
submitPressed: 'handleSubmitPressed',
editPressed: 'handleEditPressed',
}
4:您可以将其声明为视图成员。
5:在视图中的任何实例中,您都可以使用this.$('selector')
来获取jQuery对象。如果你愿意,你也可以创建jQuery对象。