举例说明backbone.jsJavascript框架的观点

举例说明backbone.jsJavascript框架的观点
主干视图用于反映应用程序中模型的外观,它们将监视事件并作出相应响应。

我不会告诉你如何绑定模型和集合在下一个教程的观点,但主要讨论如何使用Javascript模板库,特别强调的_模板。JS。

这里我们使用jQuery来操纵DOM元素。当然,你也可以使用其他的库,如MooTools或嘶嘶声,但骨干公文建议我们使用jQuery。

接下来,我们使用搜索框来创建一个新视图:
backbone.view.extend SearchView =({
初始化:函数(){
警惕(欢迎来到主干网)!;
}
});
无功search_view =新SearchView();
无论是模型、视图还是集合,初始化()方法在实例化时都会自动触发。

埃尔属性

EL属性指的是在浏览器中创建的DOM对象。每个视图都具有EL属性。如果没有定义,主干将创建一个空的div元素本身作为EL属性。

让我们创建一个EL特性视图并将其设置为# search_containe。

backbone.view.extend SearchView =({
初始化:函数(){
警惕(欢迎来到主干网)!;
}
});

无功search_view =新SearchView({埃尔:$(# search_container )});
在这一点上,看EL属性指的是ID的div元素在这个时候search_container.we这个div元素的变化,和任何事件,我们要触发必须在这个div元素。

加载模板

骨干是强烈依赖于Underscore.js,所以我们可以使用小模板Underscore.js。

现在让我们添加一个渲染()方法,并在初始化()中调用它,这样当渲染初始化时,它将自动触发渲染()。

此渲染()方法将通过jQuery将模板加载到视图的EL属性中。
搜索

backbone.view.extend SearchView =({
初始化:函数(){
This.render();
},
渲染:函数(){
通过下划线/模板编译
无功_。模板(模板= $(# search_template ),.html(){ });
将加载到EL属性中的生成的模板
这el.html美元(模板);
}
});

无功search_view =新SearchView({埃尔:$(# search_container )});
添加侦听器事件

我们使用视图的事件属性添加一个监听事件,并记住,监控事件只能添加到EL属性的子元素。现在,让我们添加一个侦听事件的子元素的按钮。
搜索

backbone.view.extend SearchView =({
初始化:函数(){
This.render();
},
渲染:函数(){
无功_。模板(模板= $(# search_template ),.html(){ });
这el.html美元(模板);
},
事件:{
单击输入按钮} {类型=:dosearch
},
dosearch:功能(事件){
单击按钮/警报触发器时
Alert (Search for + $(#search_input).Val ());
}
});

无功search_view =新SearchView({埃尔:$(# search_container )});
参数传递到模板中

模板可以从视图中以参数的形式使用。
使用参数
backbone.view.extend SearchView =({
初始化:函数(){
This.render();
},
渲染:函数(){
定义要传递的参数
var变量= { search_label:我的搜索};
通过下划线插入模板,同时传递参数
_ VaR的模板。模板($(# search_template)。Html(),变量);
将编译后的HTML加载到
这el.html美元(模板);
},
事件:{
单击输入按钮} {类型=:dosearch
},
dosearch:功能(事件){
警报(搜索+ $(# search_input)。瓦迩());
}
});

无功search_view =新SearchView({埃尔:$(# search_container )});
处理DOM事件

视图的最重要的特性之一是帮助我们自动绑定接口事件。记住我们以前如何为接口标签绑定事件吗可能是这样的。

函数生成数据(){

}
功能readdata(){

}
UpdateData函数(){

}
函数的作用是:(){

}

$(#创造),(听到咔哒声,生成数据);
$(#读),(听到咔哒声,readdata);
$(#更新),(听到咔哒声,更新);
$(#删除),(听到咔哒声,作用是:);
这是一个典型的DOM通过jQuery绑定事件的例子,如果您正在开发或已经开发了一些复杂的应用程序,您可以尝试以某种方式更好地组织代码,以便使它们看起来结构更清晰,更易于维护

主干视图对象为我们提供了一个自动绑定机制,以便更好地维护DOM和事件之间的关系,以查看下面的示例:

我想backbone.view.extend({ var =
EL:#视图,
事件:{
点击#创造:'createdata,
点击#读:'readdata,
点击#更新:'updatedata,
点击#删除:'deletedata
},
生成数据:函数(){

},
readdata:函数(){

},
更新:函数(){

},
函数的作用是::(){

}
});
VaR视角=新我的观点();

在这个例子中,我们把4个按钮在视图标签和标签ID关联的视图类MyView。

定义视图类时,我们声明一个事件属性,该属性表示视图中的用户事件列表,如下所述:
事件名称选择器:事件处理函数
事件的名称可以是任何支持DOM事件对象的选择可以是任意的字符串的jQuery选择器或者Zepto支持(包括标签选择器,类选择器,ID选择器等)和事件处理程序应该被定义在视图类本身的方法的名称。

视图对象自动解析描述的事件列表,即使用jQuery或者Zepto获得由选择器描述DOM对象绑定事件处理程序的事件的名称。这些操作都是自动完成,在视图类的实例化。我们可以更多地关注视图类本身的结构,而不是考虑如何绑定事件。

您可能会担心另一个问题:如果视图的DOM结构是动态生成的,主干是否提供相应的动态绑定和解除事件的方法

事实上,您不需要关心这个问题,因为事件中的事件通过委托()方法绑定到视图对象的EL元素,而不是由选择器描述的元素。因此,视图中的结构无论如何都会发生变化,事件中的事件是有效的。

(如果您熟悉jQuery,您可以理解它提供的委托()方法。该方法实际上将事件绑定到父元素,然后在事件冒泡时通过检查目标子元素来触发事件。

视图对象通过委托()方法绑定事件,意味着我们不需要影响生成的事件,关注视图结构的变化,而且还显示相应的事件选择器元素,必须在EL视图中的元素内绑定否则事件无效。

然而,在某些情况下,我们仍然需要手动绑定和删除事件。视图对象提供delegateevents()和()undelegateevents动态绑定和取消事件事件列表的方法,你可以看到他们通过查看API文档

呈现视图和数据

该视图主要用于事件和数据绑定接口的呈现,但是视图对象只提供一种渲染方法和相关的呈现(),它是一种无逻辑的、没有空引用的任何地方,我们需要重写它来实现自己的呈现逻辑。

视图可能包含大量的接口逻辑,并建议所有视图子类重载Render()方法和使用它作为最终的渲染一种输入方法。团队开发,严格的代码可以帮助别人更好地理解和维护你的代码。 U3000 U3000
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部