日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

用Backbone.js创建一个联系人管理系统(四)

發(fā)布時(shí)間:2025/3/15 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Backbone.js创建一个联系人管理系统(四) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文: Build a Contacts Manager Using Backbone.js: Part 4

這一系列教程的第四部分,教我們?nèi)绾瓮瓿蓪?duì)已經(jīng)存在的Contacts進(jìn)行編輯和保存.

本教程是基于這一系列的前三個(gè)教程. 有不清楚的請(qǐng)先閱讀前三部分.

開(kāi)始

在Contact原模版里添加一個(gè)edit按鈕.

<button class="edit">Edit</button>

在原Contact顯示模版下添加新的編輯模版

<script id="contactEditTemplate" type="text/template"> <form action="#"><input type="file" value="<%= photo %>" /><input class="name" value="<%= name %>" /><input id="type" type="hidden" value="<%= type %>" /><input class="address" value="<%= address %>" /><input class="tel" value="<%= tel %>" /><input class="email" value="<%= email %>" /><button class="save">Save</button><button class="cancel">Cancel</button> </form> </script>

在ContactView的events中添加需要的新事件

"click button.edit": "editContact", //點(diǎn)擊class="edit"的button 執(zhí)行 "change select.type": "addType",    //class="type"的select值改變時(shí)執(zhí)行 "click button.save": "saveEdits",    //點(diǎn)擊class="save"的button 執(zhí)行 "click button.cancel": "cancelEdit"   //點(diǎn)擊class="cancel"的button 執(zhí)行

選擇一個(gè)Contact來(lái)編輯

在Contact model定義中添加新的屬性,指定編輯狀態(tài)Contact用到的模版.

editTemplate: _.template($("#contactEditTemplate").html()),

在ContactView中定義editContact方法的實(shí)現(xiàn).

editContact: function () {this.$el.html(this.editTemplate(this.model.toJSON()));var newOpt = $("<option/>", {html: "<em>Add new...</em>",value: "addType" }),this.select = directory.createSelect().addClass("type") //調(diào)用directory的createSelect()方法創(chuàng)建現(xiàn)有的select控件. 值為當(dāng)前form的隱藏的#type的input值..val(this.$el.find("#type").val()).append(newOpt) //在控件里添加新的addType選項(xiàng)..insertAfter(this.$el.find(".name"));         //把生成的DOM內(nèi)容放到class="name"的控件后面.this.$el.find("input[type='hidden']").remove();      //刪除原來(lái)隱藏的#type的input. },

增加新的type

在修改Contact時(shí)有可能會(huì)修改type為之前沒(méi)有使用過(guò)的值.所以我們需要為ContactView添加一個(gè)新的方法

addType: function () {if (this.select.val() === "addType") {        //如果當(dāng)前select的選項(xiàng)是addTypethis.select.remove();                //刪除select控件$("<input />", {"class": "type"}).insertAfter(this.$el.find(".name")).focus(); //添加一個(gè)class="type"的input控件在class="name"控件后.}},

更新Contact

編輯完成之后我們還需要為編輯結(jié)果進(jìn)行保存: 為ContactVew添加saveEdits方法.

saveEdits: function (e) {e.preventDefault();var formData = {},prev = this.model.previousAttributes();$(e.target).closest("form").find(":input").add(".photo").each(function () { //循環(huán)form下所有inputvar el = $(this);formData[el.attr("class")] = el.val();                    //類(lèi)名為屬性給formdata賦值});if (formData.photo === "") {delete formData.photo;                              //如果photo為空刪掉使用默認(rèn)值}this.model.set(formData);this.render();if (prev.photo === "/img/placeholder.png") {delete prev.photo;}_.each(contacts, function (contact) {                       //循環(huán)每個(gè)Contactif (_.isEqual(contact, prev)) {                        //如果值和原來(lái)相等.     contacts.splice(_.indexOf(contacts, contact), 1, formData);      //用新的值替換原來(lái)的值}}); },

假如我們選擇放棄自己的編輯,ContactView還需要一個(gè)取消編輯的方法

cancelEdit: function () {this.render(); },

最后就是這個(gè)樣子了.

?

這一節(jié)的代碼下載:

http://cdn.tutsplus.com/net/uploads/legacy/1147_bb3and4/4/demo.zip

注: 原文內(nèi)容里很多代碼有問(wèn)題. 不過(guò)下載后的代碼都是可運(yùn)行的. css文件我不太關(guān)注,基本就拷貝下載后源文件里的了.

?

轉(zhuǎn)載于:https://www.cnblogs.com/dangkei/p/5048714.html

總結(jié)

以上是生活随笔為你收集整理的用Backbone.js创建一个联系人管理系统(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。