当前位置: 首页 > wzjs >正文

查询网站建设搜狗整站优化

查询网站建设,搜狗整站优化,外包网站怎么做seo,百度站长平台网站验证上传一个新菜谱-第一部分 首先我们创建一个关于增加菜谱视图的JS文件,写一些和分页差不多的示例代码 import View from ./View.js; import icons from url:../../img/icons.svg;class AddRecipeView extends View {_parentElement document.querySelector(.upload)…

上传一个新菜谱-第一部分

首先我们创建一个关于增加菜谱视图的JS文件,写一些和分页差不多的示例代码

import View from './View.js';
import icons from 'url:../../img/icons.svg';class AddRecipeView extends View {_parentElement = document.querySelector('.upload');_generateMarkup() {}
}export default new AddRecipeView();
  • 之后将一些关于上传菜谱的类用变量存储起来,这个看一下HTML代码即可
import View from './View.js';
import icons from 'url:../../img/icons.svg';class AddRecipeView extends View {_parentElement = document.querySelector('.upload');_window = document.querySelector('.add-recipe-window');_overlay = document.querySelector('.overlay');_btnOpen = document.querySelector('.nav__btn--add-recipe');_btnClose = document.querySelector('.btn--close-modal');_generateMarkup() {}
}export default new AddRecipeView();
  • 现在我们需要一个点击事件,用来处理当我们点击的时候将表单窗口的隐藏类给删除掉
  constructor() {super();//继承父类this._addHandlerShowWindow();}_addHandlerShowWindow() {this._btnOpen.addEventListener('click',function () {this._window.classList.remove('hidden');this._overlay.classList.remove('hidden');}.bind(this));}
  • 之后控制器中引入一下,不然我们的代码永远都不会执行

import * as model from './model.js';
import recipeView from './view/recipeView.js';
import searchView from './view/searchView.js';
import resultsView from './view/resultsView.js';
import bookmarksView from './view/bookmarksView.js';
import paginationView from './view/paginationView.js';
import addRecipeView from './view/addRecipeView.js';

在这里插入图片描述

  • 现在还不能关闭这个表单窗口,现在实现关闭表单窗口的方法
 constructor() {super(); //继承父类this._addHandlerShowWindow();this._addHandlerHideWindow();}_addHandlerShowWindow() {this._btnOpen.addEventListener('click',function () {this._window.classList.remove('hidden');this._overlay.classList.remove('hidden');}.bind(this));}_addHandlerHideWindow() {this._btnClose.addEventListener('click',function () {this._window.classList.add('hidden');this._overlay.classList.add('hidden');}.bind(this));}
  • 这里我们将上面的方法改写,以来实现在表单窗口之外点击也可以直接关闭这个窗口,这样用户就不需要必须点击关闭窗口的这个X了
import View from './View.js';
import icons from 'url:../../img/icons.svg';class AddRecipeView extends View {_parentElement = document.querySelector('.upload');_window = document.querySelector('.add-recipe-window');_overlay = document.querySelector('.overlay');_btnOpen = document.querySelector('.nav__btn--add-recipe');_btnClose = document.querySelector('.btn--close-modal');constructor() {super(); //继承父类this._addHandlerShowWindow();this._addHandlerHideWindow();}toggleWindow() {this._overlay.classList.toggle('hidden');this._window.classList.toggle('hidden');}_addHandlerShowWindow() {this._btnOpen.addEventListener('click', this.toggleWindow.bind(this));}_addHandlerHideWindow() {this._btnClose.addEventListener('click', this.toggleWindow.bind(this));this._overlay.addEventListener('click', this.toggleWindow.bind(this));}_generateMarkup() {}
}export default new AddRecipeView();
  • 我们想要获取表单的数据,这里我们使用一个比较新的Web API来获取表单数据
  addHandlerUpload(handler) {this._parentElement.addEventListener('submit', function (e) {e.preventDefault();const data = [...new FormData(this)];console.log(data);handler(data);});}

注:FormData 是一个 Web API,用于构造表单数据格式的键值对,方便通过 JavaScript 发送表单数据,特别是用于 AJAX 请求或 Fetch API。

  • 还是使用发布订阅者模式在控制器中进行渲染视图
//添加新食谱
const controlAddRecipe = function (newRecipe) {console.log(newRecipe);
};
const init = function () {bookmarksView.addHandlerRender(controlBookmarks);recipeView.addHandlerRender(controlRecipes);recipeView.addHandlerUpdateServings(controlServings);recipeView.addHandlerAddBookmark(controlAddBookmark);searchView.addHandlerSearch(controlSearchResults);paginationView.addHandlerClick(controlPagination);addRecipeView.addHandlerUpload(controlAddRecipe);
};init();
  • 现在我们只需要点击上传的按钮就能拿到表单数据

在这里插入图片描述

  • 之后我们讲这些数组转换为普通的对象
  addHandlerUpload(handler) {this._parentElement.addEventListener('submit', function (e) {e.preventDefault();const dataArr = [...new FormData(this)];const data = Object.fromEntries(dataArr);handler(data);});}

在这里插入图片描述

  • 但是这里还缺少一些东西,例如ID之类的东西,这些会在model中进行处理,这个将在第二部分进行处理

http://www.dtcms.com/wzjs/44335.html

相关文章:

  • 做网站的实验报告竞价排名规则
  • 浙江省住房和城乡建设厅网站首页seo网站制作优化
  • 做的比较好的网页设计网站朝阳区seo搜索引擎优化怎么样
  • 教育教学成果展示网站建设排名首页服务热线
  • 佛山做外贸网站的国际域名注册网站
  • 青岛正规网站设计公司seo整站优化公司持续监控
  • 开县网站建设营销技巧
  • 叫人做网站多少钱西安自助建站
  • 成都p2p网站建设做网站需要准备什么
  • 网站腾讯qq对话框怎么做什么是营销型网站?
  • 网站建设公司怎么开创建网站需要多少资金
  • 顺德人做多上哪个网站杭州seo工作室
  • 西安网站建设价格低最新新闻播报
  • 环宇网站建设北京网站优化技术
  • 做动画合成的视频网站成都正规搜索引擎优化
  • 手机网站app清远头条新闻
  • 克拉玛依做网站专业网站推广软件
  • 如何制作自己的网站模版dsp投放方式
  • 福田住房和建设局网站官网独立站建站平台有哪些
  • 电商网站成品案例竞价托管开户
  • 模具做外贸网站网络销售的方法和技巧
  • 网站 绝对路径搜索关键词排行榜
  • 湛江知名网站建设电话优化教程网
  • 百度搜索页面seo排名优化教程
  • 网站建设中的思想和算法最新的即时比分
  • 时代网站管理系统怎么做网站佛山做网站建设
  • 做聊天室cpa用什么类型的网站好web制作网站的模板
  • wordpress获取文章图片地址网站搜索引擎优化的步骤
  • 用旧手机做网站服务器搜索引擎优化理解
  • 财务部官方网站经济建设司产品互联网推广