用backbone实现的一个MVC的小demo
一、Apache配置
本实例需要使用php支持。要现在Apache中配置虚拟目录,在Apache下的httpd-vhosts.conf文件中添加如下代码
<VirtualHost *:80>
DocumentRoot "D:/htdocs/backbone_demo"
ServerName www.backbonedemo.cn
</VirtualHost>
在windows的hosts文件中添加配置,hosts文件的位置在c:\windows\system32\drivers\etc
127.0.0.1 www.backbonedemo.cn
二、文件目录
aaarticlea/png;base64,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" alt="" />
ajax文件中放置的是php文件,里面记录着一些写死的数据,用于等下做ajax请求返回的假数据。styles放置的是一些简单的CSS。scripts放置的是脚本文件。optimize是通过node.js压缩scripts文件后出现的文件夹,里面存放的也是js脚本。
aaarticlea/png;base64,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" alt="" />
scripts文件夹下面放置的是MVC的一些文件,以及一些工具文件等。可以参考我的另外一篇博文http://www.cnblogs.com/strick/p/3776335.html,做过一些简单说明。
三、demo操作
1.在上面Apache配置好后输入一个域名,例如我的是www.backbonedemo.cn,显示画。选择不同的类型、版块、分类后到了第二张页面会显示不同的数据内容,但是这里为了做演示,所有就简单操作,只有两种数据,一种是选择类型-》长途,剩下的选择都是另外一种数据了。
aaarticlea/png;base64,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" alt="" />
2.点击打开关键字后,显示一个弹出层画面,这里用到了artDialog插件,这个页面会接收上一张页面中传过来的参数,会根据参数选中不同的类型、版块、分类。这个页面中就用到了backbone的一些语法与操作,具体会在下面介绍。为了做简单的演示,添加关键字、关键字类别、修改关键字等,在操作逻辑正常,返回都是提示操作成功,数据也没有做dom添加操作。
aaarticlea/png;base64,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" alt="" />
3.选中某个checkbox后,点击返回关键字,选中的内容会返回到上一页面中
aaarticlea/png;base64,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" alt="" />
四、源码分析
主要的js文件是views文件夹下面的indexView.js、listView.js和model文件夹下面的listModel.js。
1.indexView.js文件主要是在做artDialog的配置,打开弹出层特效。artDialog的介绍可以参考这里http://aui.github.io/artDialog/doc/index.html
define([
'jquery',
'dialogPlus',
'constUtil'
], function($, dialog, constUtil) {
var index = {};
//关键字弹出层显示
index.setKeyWordDialogShow = function() {
var dialogUrl = constUtil.domain + constUtil.adminKeywordUrl;
var title = '关键字列表';
window.dialog = dialog;
$('#showKeyword').click(function() {
var link = this;
var input = $(link).siblings('input[type=text]');
//var dialog = top.dialog.get(window);
var transferData = {
'pclass': $('#ddlClass').val(),
'pmodel': $('#ddlModel').val(),
'ptype': $('#ddlType').val(),
'txt': input.val()
};
//console.log(transferData);
top.dialog({
url: dialogUrl,
title: title,
padding: 0,
height: 500,
width: 900,
scrolling: 'auto', //iframe显示滚动条
data: transferData, // 给 iframe 的数据
onclose: function () {
if(!this.returnValue) return;
$('#ddlClass option[value='+ this.returnValue.pclass +']').attr("selected", true);
$('#ddlModel option[value='+ this.returnValue.pmodel +']').attr("selected", true);
$('#ddlType option[value='+ this.returnValue.ptype +']').attr("selected", true);
input.val(this.returnValue.txt);
}
}).showModal();
return false;
});
};
return index;
});
2.listModel.js主要是做一些数据的验证操作,以及数据的初始化操作
define(['backbone', 'underscore', 'constUtil'], function(Backbone, _, constUtil) {
var list = Backbone.Model.extend({
url: constUtil.domain + constUtil.adminAjaxKeywordUrl,
defaults: {
data:{ pclass:'', pmodel:'', ptype:'', txt:''}
},
initialize: function() { },
validate: function(attributes, options) {
if(_.isEmpty(attributes.pclass) || attributes.pclass == 0) {
return '请选择类型!';
}
if(_.isEmpty(attributes.pmodel) || attributes.pmodel == 0) {
return '请选择版块!';
}
if(_.isEmpty(attributes.ptype) || attributes.ptype == 0) {
return '请选择分类!';
}
if(!_.isUndefined(attributes.word) && _.isEmpty(attributes.word)) {
return '请输入关键字!';
}
if(!_.isUndefined(attributes.key) && _.isEmpty(attributes.key)) {
return '请输入关键字类别!';
}
}
});
return list;
});
3.listView.js中做的就是整个那个页面的各种逻辑操作:
首先是设置,设置template、el、events
template: $('#tpl_keyword_list').html(),
el: '#main',
events: {
'click .button_submit': 'setKeyWordReturn',
'click .button_search': 'search',
'click #keyword_types a.del': 'delKeywordType',
'click #keyword_types a.edit': 'editKeywordType',
'click #keywords a.del': 'delKeyword',
'click #keywords a.edit': 'editKeyword',
'click .edit_keyword': 'submitEditKeyword',
'click .add_keyword': 'addKeyword',
'click .add_keyword_type': 'addKeywordType',
'click .edit_keyword_type': 'submitEditKeywordType',
'change #ddlClass,#ddlModel,#ddlType': 'render'
},
然后是设置初始化函数,接收从父级页面传来的参数,绑定作用域,设置选中的下拉框,渲染页面
initialize: function() {
//获取父级页面传过来的参数
this.topDialog = top.dialog ? top.dialog.get(window) : this.model.defaults;
this.requestData = this.topDialog.data;
this.ddlClass = this.$('#ddlClass');
this.ddlModel = this.$('#ddlModel');
this.ddlType = this.$('#ddlType');
//绑定作用域
_.bindAll(this, 'render', 'renderWithoutDdl');
this.setSelected();
//渲染页面
this.render();
},
接下来是render方法,通过model层请求数据,请求到的数据用Mustache模版填充(Mustache的介绍可以从这里获取到https://github.com/janl/mustache.js/);获取到的数据动态的修改一个select
render: function() {
var _this = this;
_this.model.fetch({
data: $.param(_this.getSelectValues('getKeywords')),//参数变量
success: function(model, response) {//成功的情况下返回信息
var keywords = response;//返回的信息
var html = Mustache.to_html(_this.template, keywords);//模板应用
_this.$('dl').remove();//移除原先关键字列表
_this.$el.append(html);
_this.setKeyWordReference();//选中已选关键字
//绑定父级类别下拉列表
var types = keywords.DataList;
$("#ddlParent option:not(:first)").remove();
$("#ddlKeywordType option:not(:first)").remove();
_.each(types, function(data) {
//console.log(data);
var option = string.format('<option value="{0}">{1}</option>', data.KeywordTypeId, data.Name);
$('#ddlParent').append(option);
$('#ddlKeywordType').append(option);
});
}
});
return _this;
},
最后就是一些请求操作,一些比较通用的地方做了一些简单的抽象操作如postKeyword、showDialog方法
addKeyword: function(e) {
//console.log(e);
var typeid = $('#ddlKeywordType').val();
var otherData = {word: $(e.currentTarget).siblings('input[type=text]').val(), typeid: typeid};
this.postKeyword({operate: 'addKeyword', validate: true, otherData: otherData});
},
postKeyword: function(options) {//post提交给服务器
var _this = this;
var data = this.getSelectValues(options.operate);
if(!_.isEmpty(options.otherData)) {
_.extend(data, options.otherData);
}
if(options.validate) {
var msg = this.model.validate(data);
if(_.isString(msg)) { //错误提示
this.showDialog({content: msg});
return;
}
}
$.post(_this.model.url, data, function(response) {
_this.showDialog({content: response.Msg});
_this.renderWithoutDdl();
}, 'json');
},
showDialog: function(options) {//提示框
var defaults = {
quickClose: true // 点击空白处快速关闭
};
_.extend(defaults, options);
defaults.title = options.title || '信息提示';
defaults.width = options.width || 140;
dialog(defaults).show();
}
水平有限还有很多地方需要改进,这里就只做个简单展示操作啦
源码可以在这里下载
也可以通过这里下载到http://download.csdn.net/download/loneleaf1/7500989
用backbone实现的一个MVC的小demo的更多相关文章
- 2.一个EJB的小Demo
新建一个java普通项目即可 这里用到了Jboss,需要安装Jboss,然后进入jboss-4.2.3.GA\client目录,拷贝所有的jar包到本项目的lib下. 3个接口分别如下所示: publ ...
- 实战:一、使用mongo做一个注册的小demo
思路:1.使用mongoose 进行 数据库的链接 2.使用Schema来进行传输字段的定义 3.安装koa-router进行数据处理4.安装koa-bodyparser 进行post数据交互5.解决 ...
- 撸一个JS正则小工具
写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来. demo demo展示 项目地址 代码部分 首先把布局样式先写好. <!DOCTYPE html> ...
- [置顶] 利用CXF发布webService的小demo
其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...
- 用Backbone.js创建一个联系人管理系统(一)
原文 Build a Contacts Manager Using Backbone.js: Part 1 在这个教程里我们将会使用Backbone.js,Underscore.js,JQuery创建 ...
- 【MVC 4】1.第一个 MVC 应用程序
作者:[美]Adam Freeman 来源:<精通ASP.NET MVC 4> ASP.NET MVC 是微软的一个 Web开发框架,它整合了“模型—视图—控制器(MVC)”架构 ...
- Pro ASP.NET MVC –第二章 第一个MVC程序
学习一个软件开发框架的最有效的方式就是了解并使用它.在本章,你将会创建一个简单基于ASP.NET MVC Framework的数据-实体应用程序.我们会该程序划分成若干小块,每次介绍一个部分,以便你能 ...
- 【MVC】 小问题
[MVC] 小问题 1. url 传参中文乱码 : encodeURIComponent 转码 2. RedirectToAction 重定向 : ajax 调用无效, 直接 url 访问有效 3. ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
随机推荐
- Python之路【第四篇】python基础 之基本数据类型之集合
基本数据类型之集合 set set集合,是一个无序且不重复的元素集合 # set 不允许重复的集合 set允许重复的列表但是集合是无序的 #例如 # s = {1,23,23,4,55,55} # p ...
- CSS篇之DIV+CSS布局
<div></div> div与其他标签一样,也是一个XHTML所支持的标签. div是XHTML中指定的,远门用于布局设计的容器标记. 简单的CSS布局 头部 内容 页脚 & ...
- 详解Maple中的基础工具栏
鉴于Maple 强大的符号计算功能,越来越多的人选择使用Maple 2015计算复杂的数学问题,初学者刚开始时需要对Maple有所熟悉才能很好地进行运用,下面就从基础开始,介绍Maple工作环境. M ...
- iOS并发编程笔记【转】
线程 使用Instruments的CPU strategy view查看代码如何在多核CPU中执行.创建线程可以使用POSIX 线程API,或者NSThread(封装POSIX 线程API).下面是并 ...
- 分享基于Entity Framework的Repository模式设计(附源码)
关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable? 这篇文章介绍的是使用Entity Framework实现的Rep ...
- 剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面
一.题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 例如有以下一个整数数组:12345 ...
- R in Action 读书笔记(4)
MindMapper 原文件
- Unbroken(坚不可摧)——Mateusz M
Unbroken(坚不可摧)——Mateusz M YouTube励志红人账号Mateusz M 的作品,短片由几位演讲家Les Brown.Eric Thomas.Steve Jobs.Louis ...
- ORA-12899: value too large for column (actual: 27, maximum: 20)
导入数据时报错以下错误,这是因为原来的数据库是GBK的,每个汉字两个字节,但新数据库是UTF-8的,每个汉字是三个字节,导致超过长度了. ORA-12899: value too large for ...
- MA均线组合
MA5.MA13.MA21.MA34.MA55.MA90.MA120.MA250