在这篇文章,我只挑了有用的语言助手来讲解,其它没有讲到的,大家可以去查看JavaScriptMVC的帮助文档。
注:下述功能需要引入对应的jquery/language文件夹下的插件才能使用。
1、对象的比较
$.Object.same:比较2个对象是否一样。
很难用文字去描述这个函数,我们直接来看例子可以更好理解:
$.Object.same({name: "Justin"},
{name: "JUSTIN"}) //-> false
// {name:null} 表示比较这2个对象时忽略name这个属性
$.Object.same({name: "Brian"},
{name: "JUSTIN"},
{name: null}) //-> true
// {name:i} 表示忽略这个name属性的值
$.Object.same({name: "Justin"},
{name: "JUSTIN"},
{name: "i"}) //-> true
// deep rule
$.Object.same({ person : { name: "Justin" } },
{ person : { name: "JUSTIN" } },
{ person : { name: "i" } }) //-> true
// 支持使用一样函数来做为比较器
$.Object.same({age: "Thirty"},
{age: 30},
{age: function( a, b ){
if( a == "Thirty" ) {
a = 30
}
if( b == "Thirty" ) {
b = 30
}
return a === b;
}}) //-> true
2、观察模式
我们可以实现数据属性值变化监听,那么只需要把原始数据变成观察对象即可。
这是在这里我们使用的$.Observe。
观察对象给JavaScript对象和数组提供了观察者模式的功能。
具有以下功能:
1、在对象和数组中设置和删除属性或者属性值
2、监听对象和数组的变化
3、属性嵌套也可以使用
创建一个观察对象
创建一个观察对象,或者观察数组,最简单的方式就是使用$.O(data)快捷方式:
var person = $.O({name: 'justin', age: 29}),
hobbies = $.O(['programming', 'basketball', 'nose picking'])
依赖数据通过$.O,它将创建一个实例:
1、观察对象,只需要传递一个对象进来,例如:{foo: 'bar'}
2、观察数组,只需要传递一个数组进来,例如:['foo','bar']
观察数组和观察对象是非常相似的。事实上,观察数组是继承于观察对象,而且它只是添加了一个数组操作的额外方法。
你也可以通过创建一个新的简单观察对象:
var data = {
addresses : [
{
city: 'Chicago',
state: 'IL'
},
{
city: 'Boston',
state : 'MA'
}
],
name : "Justin Meyer"
},
o = new $.Observe(data);
获取和设置属性值
使用attr和attrs来获取和设置属性值。
例如,你可以通过observe.attr(name)来读取这个属性的值:
// read name
o.attr('name') //-> Justin Meyer
通过observe.attr(name,value)来设置这个属性的值:
// update name
o.attr('name', "Brian Moschel") //-> o
观察都还可以处理嵌套数据。嵌套对象和数组可以通过$.Observe和$.Observe.List来转换。 这让你可以使用$.Observe的方法来读取嵌套属性。下述是更新第2个地址为'New York':
o.attr('addresses.1').attrs({
city: 'New York',
state: 'NY'
})
通过使用attrs()方法可以从观察对象中读取到所有属性。
o.attrs() // ->
{
addresses : [
{
city: 'Chicago',
state: 'IL'
},
{
city: 'New York',
state : 'MA'
}
],
name : "Brian Moschel"
}
监听属性值的变化
当一个属性值变化后,你能监听到它产生的事件。这里是通过2种方式去监听事件:
1、bind 监听所有变化
2、delegate 监听指定的变化
注:如果看过《JavaScriptMVC之控制器监听事件》,就会记得里面有一个叫手动绑定,也是使用这2种方式。
使用bind("change",handler(ev,attr,how,newVal,oldVal)),你可以监听到这个观察对象的任何变化产生。
下述这个句柄监听属性name的变化,how是变化['add','remove','set'], the new value and the old value.
o.bind('change', function( ev, attr, how, nevVal, oldVal ) {
})
delegate(attr,event,handler(ev,newVal,oldVal))监听一个指定属性的指定事件产生。
// listen for name changes
o.delegate("name","set", function(){
})
Delete让你通过匹配来监听指定多个属性和值的变化。
例如
r = $.O({type: "video", id : 5})
r.delegate("type=images id","set", function(){})
3、字符串操作
在开发中我们遇到字符串的操作肯定会很多,在这里我们把4个有用的字符串操作讲解。
$.String.deparam() 把字符串变成对象
$.String.deparam("foo=bar&person[age]=3") //->{foo: "bar",person: {age: "3"}}
$.String.getObject() 根据字符串获取对象
Foo = {Bar: {Zar: {"Ted"}}}
$.String.getObject("Foo.Bar.Zar") //-> "Ted"
$.String.rsplit() 根据正则表达式把字符串转换成数组
$.String.rsplit("a.b.c.d", /\./) //-> ['a','b','c','d']
注:目前我拿到的3.2.2版本,这个函数是有问题的,需要修改rsplit.js中的rsplit函数,把
26行的retArr.push(result[0]);删除掉,就可以啦。这个应该是这个版本中的一个Bug。
$.String.sub() 使用数据替换点位符得到一个新的字符串
$.String.sub("foo {bar}",{bar: "far"})
//-> "foo far"
分享到:
相关推荐
NULL 博文链接:https://lyndon-lin.iteye.com/blog/1556095
上传了一半的javascriptmvc3.0.5,这个是【下】
JavaScriptMVC是一个全面的JavaScript应用程序开发框架,专注于构建大型、可维护的前端应用。这个压缩包"javascriptmvc-3.3.zip"包含了该框架的3.3版本。JavaScriptMVC以其模块化、可测试和高性能的特点,深受开发者...
JavaScriptMVC是一个强大的JavaScript MVC(Model-View-Controller)框架,专为构建复杂且高性能的前端Web应用而设计。这个框架旨在提供一套完整的工具集,包括数据管理、视图渲染、路由控制以及测试支持,从而使得...
在JavaScriptMVC中,"javascript"是指使用JavaScript语言进行开发,而"MVC"是一种软件架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于分离关注点,...
JavaScriptMVC是一个强大的前端开发框架,它以JavaScript为核心,结合了Model-View-Controller(MVC)设计模式,旨在提供一套完整的解决方案,帮助开发者构建高效、可维护的Web应用程序。这个开源项目是基于jQuery和...
JavaScript MVC(Model-View-Controller)是一种用于构建前端Web应用程序的架构模式,灵感来源于Java的MVC框架。这种模式在JavaScript开发中广泛采用,旨在提高代码的组织性、可维护性和可扩展性。...
在“从JavaScriptMVC开始如何完成项目之压缩文件和生成帮助文档”这个主题中,我们将探讨如何利用该框架进行项目开发,特别是涉及到的压缩文件处理和生成帮助文档这两个关键环节。 一、压缩文件 在项目开发中,压缩...
javascriptmvc3.0.5,文件大于20MB,分成两个卷
这篇博客文章“从JavaScriptMVC开始如何完成项目之创建应用程序”可能是指导开发者如何使用特定的JavaScript MVC框架或库来构建一个完整的应用程序。 在JavaScript MVC中: 1. **模型(Model)**:负责处理和管理...
这得益于双向数据绑定技术,如AngularJS中的`ng-model`指令或Ember.js的`{{bind-attr}}`助手。 3. **Controller**:Controller是Model和View之间的交互层,它处理用户输入并更新模型。例如,在AngularJS中,控制器...
Mithril.js 是一个客户端的 JavaScript MVC 框架。可将应用分成数据层、UI层和控制层。Mithril 压缩后只有 3kb 左右。API 提供一个模板引擎,带 DOM diff 实现,支持路由和组合。 示例代码: ...
JavaScript MVC模式是Web开发中的一种架构模式,它用于组织和管理复杂的前端应用。MVC,即Model-View-Controller,是一种设计模式,旨在分离应用程序的数据层(Model)、用户界面层(View)和控制逻辑层(Controller...
JavaScript MVC开源框架是一种用于构建富前端应用的框架,它整合了多种JavaScript库和技术,如jQuery,使得开发者可以更高效地组织和管理前端代码,实现Model-View-Controller(MVC)设计模式。...
JavaScriptMVC是一个全面的前端开发框架,专注于使用JavaScript进行复杂应用程序的构建。它结合了Model-View-Controller(MVC)的设计模式,提供了一整套工具和服务,旨在提高开发效率和代码可维护性。在这个高级...
在"javascriptMVC 相关资料.docx"文档中,可能会包含以下知识点: 1. **MVC概念**:解释模型(Model)、视图(View)和控制器(Controller)的基本职责。模型处理数据和业务逻辑,视图负责用户界面的展示,而控制器...
:选择JavaScriptMVC框架很难。一方面要考虑的因素非常多,另一方面这种框架也非常多,而要从中选择一个合适的,还真得费一番心思。本文对JavaScriptMVC框架Angular、Backbone、CanJS和Ember作了比较,供大家参考。...
内容索引:脚本资源,Ajax/JavaScript,JavaScriptMVC JavaScriptMVC 是一个功能强大的 JavaScript framework. 也是一个很棒的JavaScript测试框架,它同样能提高开发的速度。JavaScriptMVC应用了模型-视图-控制器架构...