准备用Backbone实现一个简单的ListView,有的功能:
1.页面用模版渲染一个json数组数据(没有去请求数据库,简单的模拟)
2.绑定每个item,单击可以找到对应的model(该model即对象中包括创建时的所有属性)
在这里简单谈谈单页面应用(SPA)和传统的多页面(如JSP)开发的不同之处,多页面中每次得到一个列表,如果单击item去查看详情,一般都要去更具id到数据库再去找该对象,然后再新的页面中展示,其实负责渲染该列表的List中已经有该对象了,再去请求一次服务器是不是很不友好呢?在单页面中就没有这个问题,单击每个Item就可以找到该对象,然后直接渲染数据就可以了,省去了再去请求服务器。在这里只是简单的说说在做项目中的体会~
下面看代码吧:
$(function(){
//创建简单的User类
var User = Backbone.Model.extend({
});
//User的集合
var UserList = Backbone.Collection.extend({
model:User
});
//增加一些测试数据
var Users = new UserList;
Users.add([{'name':'zhangsan'},{'name':'lisi'}]);
//ListView中的每个Item的视图
var ItemView = Backbone.View.extend({
tagName:'li',
//_.template是Underscore中的方法
template:_.template($('#itemTmpl').html()),
// **render** is the core function that your view should override, in order
// to populate its element (`this.el`), with the appropriate HTML. The
// convention is for **render** to always return `this`.
render: function() {
//下面是this.el获得的源码
/**
if (!this.el) {
var attrs = this.attributes || {};
if (this.id) attrs.id = this.id;
if (this.className) attrs['class'] = this.className;
this.el = this.make(this.tagName, attrs);
}else if (_.isString(this.el)) {
this.el = $(this.el).get(0);
}
**/
//可以看出this.el是通过make方法动态创建的
//this.model接收在new的时候传入的user
$(this.el).html(this.template(this.model.toJSON()));
return this;//always return this
},
events:{
"click":"viewDetail"//绑定单击事件
},
viewDetail:function(){
console.log(this.model.toJSON());
alert('你选择了'+this.model.get('name'));
}
});
//主视图
var AppView = Backbone.View.extend({
initialize:function(){
//绑定一些事件
},
addAll:function(){
//实际开发中是先从服务器load数据,然后再执行下面,因此从服务器load数据应该是
//在该视图初始化的时候就执行,可以在初始化的时候调用fetch()方法
Users.each(function(user){
console.log(user);
//将user传入ItemView中
var view = new ItemView({model: user});
$('#listView').append(view.render().el);
});
}
});
//入口
new AppView().addAll();
});
代码中都加了注释,很容易理解的。
分享到:
相关推荐
主干列表视图一个简单的ListView for Backbone。 支持Backbone.Collection类的API。 set , reset , add , remove , push , pop , shift , unshift 。 注意:这没有实现Marionette.CollectionView般的行为,但...
在本教程中,我们将探讨如何使用Backbone.js框架创建一个简单的联系人管理应用,特别是关注如何构建联系人的列表展示部分。Backbone.js是一款轻量级的JavaScript库,它为前端开发提供模型-视图-控制器(MVC)架构,...
在本文中,我们将深入探讨如何在Backbone.js中编写简单的View,并理解其核心概念。 首先,让我们了解`el`属性。`el`(element)是一个特殊的属性,用于指定View所关联的DOM元素。在提供的示例中,`el`被设置为`....
Backbone的事件系统使得这种双向数据绑定变得非常简单。 在实现用户交互方面,Backbone.View提供了一系列方法,如events属性,可以方便地定义DOM元素上的事件处理器。例如,我们可以监听列表项的点击事件,然后导航...
在"bb-view"项目中,开发者可能已经实现了一个或多个这样的视图,用于展示和交互项目列表。通过学习和理解上述概念,你可以更好地理解和复用该项目中的代码,甚至扩展到更复杂的应用场景。在实践中,结合其他...
9. **SPA中的路由管理:** 如何结合Backbone.js的Router和RequireJS来实现动态导航和页面切换。 10. **性能优化:** 使用RequireJS的优化工具r.js进行代码压缩和合并,提升SPA的加载速度。 通过这个SPA示例,我们...
ListView (提供照片标题列表) RatingView (提供下拉视图;接收用户选择并向模型发出事件) 科技栈 前端 BackboneJS 引导程序 已知问题:评分未正确绑定到照片。 仅在收藏级别绑定。 相关项目 在中出相同的应用...
jQuery Mobile 提供了一套主题引擎,允许开发者通过简单的CSS类(如 `.ui-body-a` 或 `.ui-bar-b`)快速改变应用的颜色和样式。主题系统基于Sass(Syntactically Awesome Style Sheets),允许自定义颜色、字体和...