`

JavaScriptMVC之Fixture续

阅读更多

其实下面我写的主要并不是Fixture,而是Model.List,为什么还要起这个Fixture续这个名呢?
因为Fixture中,我们讲到它能模拟我们几乎所有的Ajax请求类型,其实真的是我想少了2个种操作。

就是批量的删除,和删除修改,当然,我们可以通过循环删除和修改来达到这个效果。
但是,这并是我们理想状态的代码,我们需要的时,可以像真实操作一样。
批量删除只需要传递ID数组,就可以达到一次删除多条记录,而修改也一样。

经过不断研究JavaScriptMVC的文档,发现原来Model下面还有一个Model.List。

它就为我们提供一个列模型实例。相似于模型,它可以用来:

1、当列变化时会产生一些事件。例如:remove,add,update
2、为多个实例创建多个Ajax请求。例如:批量删除Ajax请求,批量修改Ajax请求
3、给我们多个实例添加协助函数。例如:canDelete函数,判断是否可以删除

下面我们就通过一个例子来讲解,Model.List是如何体现上面这3点。

既然讲到Model.List,那么如何创建一个Model.List呢?我们还是使用《JavaScriptMVC之Fixture》的代码,
然后只要在它的基础上做些修改就可以啦。

首先,我们创建Model.List,打开E:\jQuery\javascriptmvc\cookbook\models\message.js文件,

添加以下代码:

$.Model.List('Cookbook.Models.Message.List',
{
	destroy:'POST /messages/destroy',
	update:'PUT /messages/update'
},{
	/**
	* 是否可以删除,如果message.description中包含有c这个字符,则不能删除
	*3、给我们多个实例添加协助函数。
	*/
	canDelete:function(){
		return this.grep(function(message,index){
			return message.description.indexOf("c")!=0;
		}).length == this.length;
	
	}
});

 这样Model.List就创建成功了,我们既然给List加了2个请求,那么我们就必须给Fixture添加这2个请求的模拟,
打开fixtures.js,添加以下代码:

	//批量删除Ajax请求URL
	$.fixture("POST /messages/destroy",function(settings){
		return true;
	});
	//批量修改Ajax请求URL
	$.fixture("PUT /messages/update",function(settings){
		return true;
	});

 这样我们的Model.List创建成功了,而且已经为它添加了批量删除和修改的功能,那么我们在页面上如何使用呢?
现在我们给列表每行前面加一个复选框,而且在列表下面添加2个按钮叫:批量删除,删除修改。

打开E:\jQuery\javascriptmvc\cookbook\message\list\views\message.ejs,修改结果如下:

<h3><input type="checkbox" /><span class="name"><%= name %></span><a href='javascript://' class='update'>U</a></h3>
<p><%= description %></p>

 打开E:\jQuery\javascriptmvc\cookbook\message\list\views\init.ejs,修改结果如下:

<%for(var i = 0; i < this.length ; i++){%>
	<li <%= this[i]%>>
		<%== $.View('//cookbook/message/list/views/message.ejs', this[i] )%>
	</li>
<%}%>
<input type="button" value="批量删除" id="delete"/><input type="button" value="批量修改" id="update"/>

 最后,就是修改Controller的代码了,修改结果如下:

steal( 'jquery/controller',
	   'jquery/view/ejs',
	   'jquery/controller/view',
	   'cookbook/models',
	   'jquery/tie'//引入Tie插件
	   )
.then( './views/init.ejs', 
       './views/message.ejs', 
       function($){

/**
 * @class Cookbook.Message.List
 * @parent index
 * @inherits jQuery.Controller
 * Lists messages and lets you destroy them.
 */
$.Controller('Cookbook.Message.List',
/** @Static */
{
	defaults : {}
},
/** @Prototype */
{
	init : function(){
		var me = this;
		var messages = Cookbook.Models.Message.findAll({
			group:["description"]
		}).then(function(messages){
				/**
				* 给models.list绑定remove事件
				* 1、当列变化时会产生一些事件。
				*/
				messages.bind("remove", function(ev, removed){
				removed.elements(me.element).remove()
		  });
		});
		this.element.html(this.view('init',messages));

	},
	/**
	* 批量删除
	* 2、为多个实例创建多个Ajax请求。
	*/
	'#delete click':function(el,ev){
		var models = $(":input[checked=checked]").closest(".message").models();
		if(models.canDelete()){
			models.destroy();
		}
	},
	/**
	* 批量修改
	* 2、为多个实例创建多个Ajax请求。
	*/
	"#update click":function(el,ev){
		var models = $(":input[checked=checked]").closest(".message").models();
		//把选中的记录的name值改为test
		models.update({name:'test'});
	},
	"{Cookbook.Models.Message} created" : function(Message, ev, message){
		this.element.append(this.view('init', [message]))
	},
	"{Cookbook.Models.Message} updated" : function(Message, ev, message){
		message.elements(this.element)
		      .html(this.view('message', message) );
	}
});

});

 打开cookbook.html,操作看看,是否已经成功完成我们的批量删除和修改了呢?还有就是判断的校验功能。
是不是代码看起来很清晰,而且编写这部分的代码很快,效果也不错。

1
0
分享到:
评论

相关推荐

    JavaScriptMVC之实战

    NULL 博文链接:https://lyndon-lin.iteye.com/blog/1556095

    javascriptmvc3.0.5

    上传了一半的javascriptmvc3.0.5,这个是【下】

    javascriptmvc-3.3.zip

    JavaScriptMVC是一个全面的JavaScript应用程序开发框架,专注于构建大型、可维护的前端应用。这个压缩包"javascriptmvc-3.3.zip"包含了该框架的3.3版本。JavaScriptMVC以其模块化、可测试和高性能的特点,深受开发者...

    MVC框架 JavaScriptMVC.zip

    JavaScriptMVC是一个强大的JavaScript MVC(Model-View-Controller)框架,专为构建复杂且高性能的前端Web应用而设计。这个框架旨在提供一套完整的工具集,包括数据管理、视图渲染、路由控制以及测试支持,从而使得...

    javaScriptMVC 开源框架 第一部分

    JavaScriptMVC是一个强大的前端开发框架,它以JavaScript为核心,结合了Model-View-Controller(MVC)设计模式,旨在提供一套完整的解决方案,帮助开发者构建高效、可维护的Web应用程序。这个开源项目是基于jQuery和...

    javascriptmvc-3.2.4.zip

    JavaScriptMVC是一个全面的JavaScript开发框架,专注于构建大型、可维护的前端应用。这个3.2.4版本的压缩包包含了一系列工具和库,旨在帮助开发者遵循Model-View-Controller(MVC)设计模式,提高代码组织和项目管理...

    从JavaScriptMVC开始如何完成项目之压缩文件和生成帮助文档

    在“从JavaScriptMVC开始如何完成项目之压缩文件和生成帮助文档”这个主题中,我们将探讨如何利用该框架进行项目开发,特别是涉及到的压缩文件处理和生成帮助文档这两个关键环节。 一、压缩文件 在项目开发中,压缩...

    javascriptmvc

    JavaScript MVC(Model-View-Controller)是一种用于构建前端Web应用程序的架构模式,灵感来源于Java的MVC框架。这种模式在JavaScript开发中广泛采用,旨在提高代码的组织性、可维护性和可扩展性。...

    javascriptmvc-3.0.5最新包

    javascriptmvc3.0.5,文件大于20MB,分成两个卷

    从JavaScriptMVC开始如何完成项目之创建应用程序

    这篇博客文章“从JavaScriptMVC开始如何完成项目之创建应用程序”可能是指导开发者如何使用特定的JavaScript MVC框架或库来构建一个完整的应用程序。 在JavaScript MVC中: 1. **模型(Model)**:负责处理和管理...

    JavaScriptMVC框架Mithril.zip

    Mithril.js 是一个客户端的 JavaScript MVC 框架。可将应用分成数据层、UI层和控制层。Mithril 压缩后只有 3kb 左右。API 提供一个模板引擎,带 DOM diff 实现,支持路由和组合。 示例代码: ...

    谈谈JavaScriptMVC模式共3页.pdf.zip

    JavaScript MVC模式是Web开发中的一种架构模式,它用于组织和管理复杂的前端应用。MVC,即Model-View-Controller,是一种设计模式,旨在分离应用程序的数据层(Model)、用户界面层(View)和控制逻辑层(Controller...

    javaScriptMVC 开源框架 第二部分

    JavaScript MVC开源框架是一种用于构建富前端应用的框架,它整合了多种JavaScript库和技术,如jQuery,使得开发者可以更高效地组织和管理前端代码,实现Model-View-Controller(MVC)设计模式。...

    JavascriptMVC代码

    JavaScript MVC(Model-View-Controller)是一种用于构建前端应用程序的架构模式,它借鉴了传统的后端MVC设计模式,以帮助开发者组织和管理复杂的JavaScript应用。在这个架构中,Model负责数据处理,View负责用户...

    JavaScriptMVC:JavaSriptMVC 高级编程课程

    JavaScriptMVC是一个全面的前端开发框架,专注于使用JavaScript进行复杂应用程序的构建。它结合了Model-View-Controller(MVC)的设计模式,提供了一整套工具和服务,旨在提高开发效率和代码可维护性。在这个高级...

    javaScriptMVC 开源框架 第三部分(相关资料和例子)

    在"javascriptMVC 相关资料.docx"文档中,可能会包含以下知识点: 1. **MVC概念**:解释模型(Model)、视图(View)和控制器(Controller)的基本职责。模型处理数据和业务逻辑,视图负责用户界面的展示,而控制器...

    JavaScriptMVC框架PK:Angular、Backbone、CanJS与Ember

    :选择JavaScriptMVC框架很难。一方面要考虑的因素非常多,另一方面这种框架也非常多,而要从中选择一个合适的,还真得费一番心思。本文对JavaScriptMVC框架Angular、Backbone、CanJS和Ember作了比较,供大家参考。...

    JavaScriptMVC 测试框架 v2.2

    内容索引:脚本资源,Ajax/JavaScript,JavaScriptMVC JavaScriptMVC 是一个功能强大的 JavaScript framework. 也是一个很棒的JavaScript测试框架,它同样能提高开发的速度。JavaScriptMVC应用了模型-视图-控制器架构...

Global site tag (gtag.js) - Google Analytics