MUI框架-10-MUI 数据交互-跳转详情页面

  • 上一篇介绍了如何实现数据交互,给别人的 API 发送 ajax 请求,我们得到数据,再使用 art-template 模板引擎拼接 HTML,最终实现实现数据交互,如果还没有接触,请先学习:MUI框架-09-MUI 与后台数据交互
  • 本篇介绍 MUI 事件管理,实现点击新闻列表跳转详情页的效果
  • 放上一张图:

  • 官方文档:MUI 事件管理

MUI 事件管理

  • 事件绑定:MUI 的事件绑定,除了可以使用addEventListener()方法监听某个特定元素上的事件外, 也可以使用.on()方法实现批量元素的事件绑定
  • 我们先看一下官方文档实例:
    • 点击新闻列表,获取当前列表项的id,并将该id传给新闻详情页面,然后打开新闻详情页面
    • 这里 mui,前面是一个 id 选择器,下面一个 on 事件函数
  1. mui(".mui-table-view").on('tap','.mui-table-view-cell',function(){
  2. //获取id
  3. var id = this.getAttribute("id");
  4. //传值给详情页面,通知加载新数据
  5. mui.fire(detail,'getDetail',{id:id});
  6. //打开新闻详情
  7. mui.openWindow({
  8. id:'detail',
  9. url:'detail.html'
  10. });
  11. })

项目搭建

  • 因为我们这个最好是跟着我的 文章从开始看,因为后面的文章 需要前面的基础
  • 请先查看:MUI框架-09-MUI 与后台数据交互
  • 先按照下面目录,建好项目:

源代码文件:

  • 因为代码比较复杂,分开讲太乱,大家可以拷贝,详解写在注释,

  • 1.首先需要自己下载只有 template-web.js 文件,获取方法:

    npm install art-template --save

    • 然后按下面路径找到 template-web.js :

  • 2.拷贝 index.html 代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  6. <title></title>
  7. <script src="js/mui.min.js"></script>
  8. <link href="css/mui.min.css" rel="stylesheet" />
  9. <link rel="stylesheet" type="text/css" href="css/index.css" />
  10. </head>
  11. <body>
  12. <!--头部信息-->
  13. <header class="mui-bar mui-bar-nav title">
  14. <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
  15. <h1 class="mui-title">知乎日报</h1>
  16. </header>
  17. <script type="text/javascript" charset="utf-8">
  18. mui.init({
  19. subpages: [{
  20. url: 'html/content.html',
  21. id: 'content.html',
  22. styles: {
  23. top: '45px', //mui标题栏默认高度为45px;
  24. bottom: '0px' //默认为0px,可不定义;
  25. }
  26. }]
  27. });
  28. </script>
  29. <nav class="mui-bar mui-bar-tab">
  30. <a class="mui-tab-item mui-active">
  31. <span class="mui-icon mui-icon-home"></span>
  32. <span class="mui-tab-label">首页</span>
  33. </a>
  34. <a class="mui-tab-item">
  35. <span class="mui-icon mui-icon-phone"></span>
  36. <span class="mui-tab-label">电话</span>
  37. </a>
  38. <a class="mui-tab-item">
  39. <span class="mui-icon mui-icon-email"></span>
  40. <span class="mui-tab-label">邮件</span>
  41. </a>
  42. <a class="mui-tab-item">
  43. <span class="mui-icon mui-icon-gear"></span>
  44. <span class="mui-tab-label">设置</span>
  45. </a>
  46. </nav>
  47. </body>
  48. </html>
  • 3.拷贝 content.html 代码:
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  7. <link href="../css/mui.min.css" rel="stylesheet" />
  8. </head>
  9. <body>
  10. <div class="mui-content">
  11. <div class="mui-slider">
  12. <div class="mui-slider-group">
  13. <!--第一个内容区容器-->
  14. <div class="mui-slider-item">
  15. <!-- 具体内容 -->
  16. <img src="../img/1D52F569E73F611465E9BB3656E9628B.png" />
  17. </div>
  18. <!--第二个内容区-->
  19. <div class="mui-slider-item">
  20. <!-- 具体内容 -->
  21. <img src="../img/8CF9B879550CD10AA9B7B58777367C7F.png" />
  22. </div>
  23. </div>
  24. </div>
  25. <ul class="mui-table-view" id="zhihu">
  26. </ul>
  27. </div>
  28. <script src="../js/mui.min.js"></script>
  29. <!-- 导入 template-web.js
  30. 官网下载:http://aui.github.io/art-template/
  31. csdn下载:https://download.csdn.net/download/qq_40147863/10689407
  32. -->
  33. <script src="../js/template-web.js" type="text/javascript" charset="UTF-8"></script>
  34. <!-- 使用<script id="list" type="text/html"> 拼接 html -->
  35. <script id="list" type="text/html">
  36. <!-- 循环语法 -->
  37. {{each stories as list}}
  38. <li class="mui-table-view-cell mui-media" id="{{list.id}}">
  39. <a href="javascript:;">
  40. <img class="mui-media-object mui-pull-left" src="{{list.images[0]}}">
  41. <div class="mui-media-body">
  42. <!-- 获取 title -->
  43. {{list.title}}
  44. </div>
  45. </a>
  46. </li>
  47. {{/each}}
  48. </script>
  49. <script type="text/javascript">
  50. //plusReady,用来定义加载dom后的操作
  51. mui.plusReady(function() {
  52. //发起 ajax请求,地址使用知乎日报 api
  53. mui.ajax('https://news-at.zhihu.com/api/4/theme/11', {
  54. /* data 是参数,我们这里不需要,我们只是从 api获取数据
  55. data: {
  56. username: 'username',
  57. password: 'password'
  58. },
  59. */
  60. dataType: 'json', //服务器返回json格式数据
  61. type: 'get', //HTTP请求类型
  62. timeout: 10000, //超时时间设置为10秒;
  63. headers: {
  64. 'Content-Type': 'application/json'
  65. },
  66. success: function(data) {
  67. //服务器返回响应,根据响应结果,分析是否登录成功;
  68. //我们现在控制台打印一下请求结果
  69. //console.log(data)
  70. //然后获取json数据中的具体值
  71. //console.log(data.stories[0].title)
  72. //list 对应上面的 id,就是得到 拼接的 html
  73. var html = template('list', data);
  74. //把得到的 html 放到id为 zhihu 的 ul 标签里
  75. document.getElementById("zhihu").innerHTML = html;
  76. //console.log(html);
  77. },
  78. error: function(xhr, type, errorThrown) {
  79. //异常处理;
  80. console.log(type);
  81. }
  82. });
  83. });
  84. //网页预加载
  85. mui.init({
  86. preloadPages:[{
  87. id:'info',
  88. url:'info.html'
  89. }
  90. ]
  91. });
  92. var detailPage = null;
  93. //添加列表项的点击事件
  94. mui('.mui-table-view').on('tap', 'li', function(e) {
  95. var id = this.getAttribute('id');
  96. //获得详情页面
  97. if(!detailPage){
  98. detailPage = plus.webview.getWebviewById('info');
  99. }
  100. //触发详情页面的newsId事件
  101. mui.fire(detailPage,'id',{
  102. id:id
  103. });
  104. //打开详情页面
  105. mui.openWindow({
  106. id:'info'
  107. });
  108. });
  109. </script>
  110. </body>
  111. </html>
  • 4.拷贝详情页 info.html 代码:
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  7. <link href="../css/mui.min.css" rel="stylesheet" />
  8. </head>
  9. <body>
  10. <div class="mui-content">
  11. <ul class="mui-table-view" id="newsinfo"></ul>
  12. <script id="lists" type="text/html">
  13. {{body}}
  14. </script>
  15. </div>
  16. <script src="../js/mui.min.js"></script>
  17. <!-- 导入 template-web.js
  18. 官网下载:http://aui.github.io/art-template/
  19. csdn下载:https://download.csdn.net/download/qq_40147863/10689407
  20. -->
  21. <script src="../js/template-web.js" type="text/javascript" charset="UTF-8"></script>
  22. <script type="text/javascript">
  23. mui.init();
  24. //添加newId自定义事件监听
  25. window.addEventListener('id', function(event) {
  26. //获得事件参数
  27. var id = event.detail.id;
  28. //根据id向服务器请求新闻详情
  29. //plusReady,用来定义加载dom后的操作
  30. mui.plusReady(function() {
  31. //发起 ajax请求,地址使用知乎日报 api
  32. mui.ajax('https://news-at.zhihu.com/api/4/news/'+ id, {
  33. /* data 是参数,我们这里不需要,我们只是从 api获取数据
  34. data: {
  35. username: 'username',
  36. password: 'password'
  37. },
  38. */
  39. dataType: 'json', //服务器返回json格式数据
  40. type: 'get', //HTTP请求类型
  41. timeout: 10000, //超时时间设置为10秒;
  42. headers: {
  43. 'Content-Type': 'application/json'
  44. },
  45. success: function(data) {
  46. //服务器返回响应,根据响应结果,分析是否登录成功;
  47. //我们现在控制台打印一下请求结果
  48. console.log("666");
  49. console.log(data);
  50. //然后获取json数据中的具体值
  51. //console.log(data.stories[0].title)
  52. //list 对应上面的 id,就是得到 拼接的 html
  53. var html = template('lists', data);
  54. //把得到的 html 放到id为 zhihu 的 ul 标签里
  55. document.getElementById("newsinfo").innerHTML = data.body;
  56. //console.log(html);
  57. },
  58. error: function(xhr, type, errorThrown) {
  59. //异常处理;
  60. console.log(type);
  61. }
  62. });
  63. });
  64. });
  65. </script>
  66. </body>
  67. </html>

项目运行

更多文章链接:MUI 框架


- 本笔记不允许任何个人和组织转载

MUI框架-10-MUI 数据交互-跳转详情页面的更多相关文章

  1. 使用mui框架后a标签无法跳转

    由于最近工作项目上使用到前台mui框架,笔者在将H5转换为jsp时,遇见各种各样问题,原因归结为对mui框架不熟悉,今天就遇见一个特别奇怪的问题,界面中超链接<a>标签无法跳转,笔者试着添 ...

  2. mui框架中底部导航的跳转1

    mui框架极大的方便了app的开发但是我们在做页面之间的切换时发现不能实现 a 链接的跳转,这是应为mui相关的一些控件是通过拦截a标签上的href来实现的,所以mui.js会阻止a标签上的href跳 ...

  3. 在ssm框架中前后台数据交互均使用json格式

    前后台数据交互均使用json. 框架ssm(spring+springmvc+mybatis) @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象,注解加 ...

  4. mui框架中底部导航的跳转2

    接上一篇 还有一种方法就是在一心得页面中打开我们所需要的网页 代码如下: 向新的的页面穿值: 获取到新页面上的值:

  5. ssm框架前后端数据交互完整示例

    1.sprinMvc控制层 package com.dengfeng.house.controller; import java.text.ParseException; import java.ut ...

  6. JavaScript Post提交数据并跳转到页面(模拟Form表单提交)

    function GotoWatchTicketCode() { var orderID='@ViewBag.OrderInfo.OrderID'; var phoneNum='@ViewBag.Or ...

  7. webpack+vue项目实战(四,前端与后端的数据交互和前端展示数据)

    地址:https://segmentfault.com/a/1190000010063757 1.前言 今天要做的,就是在上一篇文章的基础上,进行功能页面的开发.简单点说呢,就是与后端的数据交互和怎么 ...

  8. MUI框架-09-MUI 与后台数据交互

    MUI框架-09-MUI 与后台数据交互 本篇介绍使用 art-template 和原生 MUI 的数据交互 mui.ajax 来实现 我们大家都知道,想要数据交互就要有数据,每次当我们发送请求,我们 ...

  9. MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换

      概 述 JRedu 在上一篇博客中,我们学习了如何使用Hbuilder创建一个APP,同时如何使用MUI搭建属于自己的第一款APP,没有学习的同学可以戳链接学习: http://www.cnblo ...

随机推荐

  1. npm install 报错:ERR! code EINTEGRITY 解决方案

    npm升级后,npm install 报错了,报错信息:ERR! code EINTEGRITY到处百度搜索解决方案,终于找到了!“npm cache verify”这条命令帮助了不少人 npm ca ...

  2. windows mobile ,wince 系统,用代码启动cab文件安装

    有时候需要用代码来启动安装cab,以下是代码.不能实现静默安装. 启动后会提示用户是否安装,需要用户点击是才行. using System; using System.Collections.Gene ...

  3. IO流(二)字符流

    1.字符流:在字节流的基础上添加了编码机制.很大程度上和字节流操作一样的,字符流只能操作文本类文件,准确的说应该是纯文本类文件.例如.txt,.java,.cpp,.html等 编码:每一个国家都有自 ...

  4. Javac的命令(-Xlint)

    在OptionName类中的枚举定义如下: XLINT("-Xlint"), XLINT_CUSTOM("-Xlint:"), -Xlint     Enabl ...

  5. MongoDB数据库及其Python用法

    一 .命令行模式 mongo # 进入mongodb命令行模式 show dbs use taobao # 进入该数据库,如不存在则创建之 show tables # 条件操作符 (>) 大于 ...

  6. 1-1、create-react-app 配置 mobx

    1.用npx create-react-app my-app安装项目 2.cd my-app 3.执行 npm  run eject  让配置文件可见 4.npm install --saveDev ...

  7. 各种数据库maven的pom文件编写与ibernate链接配置

    各种数据库Hibernate链接配置 Derby db driver maven dependency <dependency>         <groupId>org.ap ...

  8. 基于 Annotation 的 Spring AOP 权限验证方法的实现

    1. 配置 applicationContext 在 Spring 中支持 AOP 的配置非常的简单,只需要在 Spring 配置文件 applicationContext.xml 中添加: < ...

  9. springmvc 定时器 多数据源

    0.目的:测试网上多数据源切换代码靠不靠谱 1.先说需求:根据摄像头采集到的数据,做一些业务上的特定处理,但是,但是很重要,摄像采集数据不直接存在此数据库,需要定时的去外部DB去取数据,这就涉及到多数 ...

  10. SqlServer 2008 还原数据库的问题

    今天想把服务器上的一个SqlServer2005的数据库 还原到本地 SqlServer2008的数据库, 操作是报错:备份集中的数据库备份与现有的 'zyehouqin' 数据库不同. RESTOR ...