2014/08/13 – Backbonejs

[来自: Backbone.js 开发秘笈 第7章]

Restful 服务调用

  Collection.fetch() - 请求集合

  Model.save() - 新增或修改模型(根据 Model.isNew() 方法判断操作类型)

  Model.destroy() - 删除模型

  Model.sync() - 请求的执行方法, fetch(), save(), destroy() 都调用其方法进行操作请求

(function ($) {//define -------------------------------var Product = Backbone.Model.extend({idAttribute: "Id",url: "/ProductService.svc/Product"//Rest URL
    });var ProductCollection = Backbone.Collection.extend({model: Product,url: "/ProductService.svc/products"//rest URL
    });var ProductListView = Backbone.View.extend({tagName: "ul",events: {"click": "selectName"},selectName: function (e) {if (e.target.nodeName === "A") {this.collection.trigger("selected", this.collection.get($(e.target).attr("data-id")));}},render: function () {this.$el.html(_.map(this.collection.models, function (model) {return "<li><a href='javascript:;' data-id='" + model.get('Id') + "'>" + model.get('Name') + "</a></li>";}));return this;}});var EditPanelView = Backbone.View.extend({tagName: "div",events: {"click .btnUpdate": "update","click .btnCreate": "create","click .btnDestroy": "destroy"},update: function () {/* Backbone MethodMapcreate: "POST"delete: "DELETE"patch: "PATCH"read: "GET"update: "PUT"*//* 参数二{patch:true // is PATCH methodwait:true //同步方法}*/this.model.save({'Name': this.$el.find("input[type='textBox']")[0].value}, { success: this.success, operType: "update" });},create: function () {//Collection.create() 方法回调用 Model.save() 方法new Product({Name: this.$el.find("input[type='textBox']")[0].value}).save(null, { success: this.success, operType: "create" });},destroy: function () {this.model.destroy({ success: this.success, url: this.model.url + "/" + this.model.get('Id'), operType: "destroy" });},success: function (model, data, options) {//operate callbackswitch (options.operType) {//operType 自定义属性,标识回调函数的操作类型case "create":break;case "update":break;case "destroy":break;default:}},render: function () {this.$el.html("<label>Name:</label><input type='textBox' value='" + this.model.get("Name") + "'>" +"<input type='button' class='btnUpdate' value='Update'/>" +"<input type='button' class='btnCreate' value='Create'/>" +"<input type='button' class='btnDestroy' value='Destroy'/>");return this;}});$(function () {//instance ---------------------------------var productCollection = new ProductCollection();//fetch() 方法获取数据    [success and error 是成功的和异常的回调函数]/* fetch, save, destroy 方法都会调用 sync() 方法来执行 HTTP 请求 *//* sync() 方法参数method - [create, update, patch, delete, read]model - 需要同步的模型或集合options - $.ajax 所需要的参数*/productCollection.fetch({success: function (collection, response, options) {collection.on("selected", function (model) {$("#divEdit").html(new EditPanelView({ model: model }).render().el);});$('body').html(new ProductListView({ collection: collection }).render().el);$('body').append($("<div id='divEdit'></div>"));},error: function (collection, response, options) {alert('error');}});});
})(jQuery);

使用 HTML 5 本地存储

(function ($) {//依赖 backbone.localStorage.js//https://github.com/jeromegn/backbone.localStorage//define --------------------------var UserModel = Backbone.Model.extend();/* Backbone 的 LocalStorage Adapter 重写了 Backbone.sync() 方法。当模型关联上集合后,模型的 save() 方法可正常使用。*//* 注:创建模型时,不要调用 Model.save() 方法,而是调用 Collection.create() 方法 */var UserCollection = Backbone.Collection.extend({model: UserModel,//定义本地存储模型对象 [参数唯一性]localStorage: new Backbone.LocalStorage("userCollection")});
})(jQuery);

View Code

posted on 2014-08-13 16:40 MSchina 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/yoyoone23/p/3910496.html

2014/08/13 – Backbonejs相关推荐

  1. 2014/08/11 – Backbonejs

    2014/08/11 – Backbonejs [来自: Backbone.js 开发秘笈 第6章] Template 用法: 通过 Underscore.js 提供的 _.template() 方法 ...

  2. 【跃迁之路】【554天】程序员高效学习方法论探索系列(实验阶段311-2018.08.13)...

    @(跃迁之路)专栏 [跃迁之路]奖励金计划正式开始 从2018.7.1起,[跃迁之路]奖励金计划正式起航,从今以后,, 每月1日,我会将自己个人上月收入的1%计入[跃迁之路]奖励金池,积累到足够金额后 ...

  3. 逆向教程-2014.08版电信爱游戏支付分析

    最近几个月接触到Android软件逆向 原软件地址:http://www.play.cn/game/gamedetail/5010556.htm 工具:apk改之理 步骤: 1.首先反编译文件,本人下 ...

  4. http://southpeak.github.io/blog/2014/08/02/reactiv

    2019独角兽企业重金招聘Python工程师标准>>> http://southpeak.github.io/blog/2014/08/02/reactivecocoazhi-nan ...

  5. js format 设置日期格式 将Fri Dec 12 2014 08:00:00 GMT+0800改为2014-12-12 8:00:00

    var d = new Date('Fri Dec 12 2014 08:00:00 GMT+0800');d.getFullYear() + '-' + (d.getMonth() + 1) + ' ...

  6. 2014.9.13模拟赛【数位和乘积】

    数位和乘积(digit.cpp/c/pas) [题目描述] 一个数字的数位和乘积为其各位数字的乘积.求所有的N位数中有多少个数的数位和乘积恰好为K.请注意,这里的N位数是可以有前导零的.比如01,02 ...

  7. java第七章jdbc课后简答题_Java周测题08.13

    1.关于Mybatis的描述正确的是:Mybatis是持久层框架,Mybatis封装了JDBC,Mybatis简化了代码的编辑和使用,Mybatis是一个半ORM(对象关系映射)框架, Mybatis ...

  8. 程序员面试金典 - 面试题 08.13. 堆箱子(DP)

    1. 题目 堆箱子.给你一堆n个箱子,箱子宽 wi.深 di.高 hi. 箱子不能翻转,将箱子堆起来时,下面箱子的宽度.高度和深度必须大于上面的箱子. 实现一种方法,搭出最高的一堆箱子.箱堆的高度为每 ...

  9. 病毒性的抱团忽悠:互联网思维--TOMsInsight 2014.08.01

    病毒性的抱团忽悠:互联网思维 2014-08-01 TOMsInsight (过去三篇黑市分析系列报告触动了不少利益团体,给TOMsInsight带来不少麻烦.周末了我们轻松一下,分享个简单愉快的话题 ...

最新文章

  1. easyui datagrid 多行删除问题
  2. oracle动态 returning,oracle returning
  3. sql range 范围内查询
  4. BZOJ3110: [Zjoi2013]K大数查询(整体二分)
  5. 怎样防止程序重复开启?
  6. Freemarker内置函数使用
  7. 2014.10.18笔记
  8. 父类指针指向子类对象,子类指针不能指向父类对象
  9. 20200517每日一句
  10. 超好用的开源 IP 地址管理系统,告别传统 Excel 统计方式!
  11. Word查找重复的内容
  12. c语言小饭店等位就餐程序,小饭店预约登记管理系统,
  13. 我在舒舍的短租生活之旅
  14. 南浔区跨境电子商务公共服务中心今日揭牌!
  15. vue+springboot+java志愿者活动报名网站系统maven源码
  16. 电子商务 实训三:电子商店策划实训
  17. 谈谈入职前后的一个月吧
  18. python编程圆面积_Python编程1——Python计算圆的周长和面积
  19. ios备忘录下载安卓版_安利3款手机实用软件,安卓和ios都有份
  20. 远心光学成像系统原理详解

热门文章

  1. 关于2016年房价的思考
  2. 声场模型如何区分近场和远场
  3. 隋唐5s与linux的关系,我与Linux
  4. hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...
  5. 中间表增加额外字段_知识分享 I 这样显示报表筛选字段 你学会了吗
  6. 030_Message消息提示
  7. dbcontext mysql_.Net Core 2.0数据库第一种方法Mysql DB的Scaffold-DbContext
  8. python 队列 一次取多个_Queue 队列模块-Python成为专业人士笔记
  9. Windoes上安装(升级)虚拟化VMware Workstattion Pro软件、序列码激活软件
  10. 外网访问 KVM 虚拟机