Framework7学习笔记之页面路由(旧版)

一:页面路由

Framework7的页面之间跳转有4种方法:

  • 异步加载:从一个指定的URL加载页面,通常是另外一个页面的文件地址(默认行为)【常用】
  • JS:创建和加载动态页面(html字符串拼接成的页面内容)【不常用】
  • 内联页面:在index.html中将所有的page加载进来,在view中直接通过名字进行跳转。【常用】
  • 使用模版:Framework7可以定义文件模版,可以通过调用模版并传值生成页面并且加载进来。【高阶用法】

二:异步加载

1)页面跳转

用<a>标签创建一个链接指向页面文件,当点击这个链接的时候,Framework7会通过Ajax获取文件,解析它的内容,然后把它插入到DOM中,并且做一个动画切换到这个新页面。如:

<a href="about.html">Go to About page</a>

2)后退:使用back类标签

<div class="page" data-page="about">
  <!-- Just add additional "back" class to link -->
  <a href="index.html" class="back"> Go back to home page </a>
</div>

3)ios有滑动后退动作,可以设置或关闭它

4)关闭切换动画:为了提升切换效率,可以使用no-animation类关闭切换动画

<a href="about.html" class="no-animation"> Load About page immediately </a>

5)通过 data-XX 进行更多配置,其中 XX 参数主要有:

参数 类型 说明
url string 需要加载的页面的URL
content string or HTMLElement or [jQuery/Zepto/DOM7 collection] or [array of HTMLElement] 需要加载的动态页面的内容
pageName string 需要加载的页面的名称(data-page)。只用在内联页面(DOM cached)。
template function (Template7 compiled template) 需要加载并渲染的模板
context object or array 渲染Template7 模板时需要的上下文。这里有更多说明Template7 Pages
contextName string 可选的。用来渲染 Template7 的 templatesData 的上下文名称/路径。这里查看更多说明 Template7 Pages
query object Object with additionall query parameters that could be retreived in queryobject of Page Data
force boolean 可选的。只对 back 方法有效。如果设置为 true,那么会忽略浏览历史中的上一个页面,而是直接加载指定的页面。
ignoreCache boolean 可选的。如果设置为 true ,那么会忽略URL对应的缓存,并且再次通过XHR来加载。
animatePages boolean 可选的。可以覆盖在 View 中的相同参数,打开/关闭页面切换的动画。
reload boolean 可选的。如果设置为 true,那么不会当做新页面加载,而是直接替换当前视图的当前页面。并且在视图浏览历史中替换最后一条历史。
reloadPrevious boolean 可选的。和 reload 一样,不过是对上一个页面。
pushState boolean 可选的。是否把浏览历史存储在浏览器的浏览历史中。(这样可以使用浏览器的后退/前进按钮)

注意, urlcontentpageNametemplate 这四个参数,你只能同时使用一个。

6)在js中加载页面

view.router.loadPage(‘页面.html‘);

7)在js中后退

view.router.back();

三:加载动态页面

1)在js中加载动态页面

我们可以在js文件中,通过拼接html字符串来创建、加载动态页面。

// 1:HTML Content of new page:
var newPageContent = ‘<div class="page" data-page="my-page">‘ +
                        ‘<div class="page-content">‘ +
                          ‘<p>Here comes new page</p>‘ +
                        ‘</div>‘ +
                      ‘</div>‘;

//2:Load new content as new page
view.router.loadContent(newPageContent);

2)在js中创建页面内容多有不便,我们也可以在index.html的script标签间创建动态page,然后在js中通过id选择器动态加载它。

创建动态page:

<script type="text/template" id="myPage">
    <div class="navbar">
        <div class="navbar-inner">
            <div class="center">My Page</div>
        </div>
    </div>
    <div class="page" data-page="my-page">
        <div class="page-content">
            <p>Here comes page content</p>
        </div>
    </div>
</script>  

加载动态page:

view.router.loadContent($(‘#myPage‘).html());

四:内联页面(DOM缓存)

1)启用DOM缓存功能

DOM缓存可以将所有页面都加载、缓存起来,然后在dom中就可以直接通过名字、id等选择器来操作页面了。

var mainView = myApp.addView(‘.view-main‘, {
    domCache: true //启用dom缓存
});

2)在index.html中加载所有页面(page被加载到view容器中,加了 cached类 的page被缓存,不加的被渲染呈现)

<html>
  <head>...</head>
  <body>
    ...
    <!-- Views -->
    <div class="views">
      <!-- View -->
      <div class="view view-main">
        <!-- Pages -->
        <div class="pages">
          <!-- Home page -->
          <div class="page" data-page="index">
            <div class="page-content">
              <p>Home page</p>
            </div>
          </div>

          <!-- About page -->
          <div class="page cached" data-page="about">
            <div class="page-content">
              <p>About page</p>
            </div>
          </div>

          <!-- Services page -->
          <div class="page cached" data-page="services">
            <div class="page-content">
              <p>Services page</p>
            </div>
          </div>
        </div>
      </div>
    </div>
    ...
  </body>
</html>

3)跳转至内联页面:通过 #pageName 

<a href="#about">Go to About page</a>

4)返回上一页内联页面:加 back 类。

<a href="#index" class="back"> Go back to home page </a>

5)js中跳转至内联页面

view.router.load({pageName: ‘pageName‘});

五:模版文件的使用(略)

原文地址:https://www.cnblogs.com/ygj0930/p/8445687.html

时间: 2024-10-11 13:56:40

Framework7学习笔记之页面路由(旧版)的相关文章

Framework7学习笔记之页面路由(新版)

一:新版路由器 在新版本中,我们可以在js文件中初始化app时,将page文件加载进来,逐一命名,甚至可以传参.定义回调函数等等,十分方便,在app对象中创建的页面路由,各个页面默认是对于app可见的,也就是说各个view都可通过pageName来调用它. 如果在某个View中对一些页面进行特定的路由设置,则可以在js文件中初始化view对象时,将page文件加载进来,逐一命名.传参.定义回调函数等等. 原文地址:https://www.cnblogs.com/ygj0930/p/8445732

Framework7学习笔记之 搜索栏(旧版)

一:搜索栏 应用场景:一般用于在含有列表的页面中进行内容检索. 二:定义搜索栏 搜索栏应该放到".page"内,".page-content"前: 在page-content中,需要定义 检索失败 的提示文本,以及陈列内容的列表. <div class="page"> <!-- 1:定义搜索栏 --> <form class="searchbar"> <div class="

Symfony2 学习笔记之系统路由

mfony2 学习笔记之系统路由 漂亮的URL绝对是一个严肃的web应用程序必须做到的,这种方式使index.php?article_id=57这类的丑陋URL被隐藏,由更受欢迎的像 /read/intro-to-symfony 来替代. 拥有灵活性更为重要,如果你要改变一个页面的URL,比如从/blog 到 /new 怎么办?有多少链接需要你找出来并更新呢? 如果你使用Symfony的router,这种改变将变得很简单. Symfony2 router让你定义更具创造力的URL,你可以map你

OD调试学习笔记7—去除未注册版软件的使用次数限制

OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需要你掏腰包来获得更多的功能或者解除限制.那么我们就可以逆向的来思考,如果该程序成功的注册后,那么程序的行为必将发生变化,如NAG去除了,如功能限制没有了等等.也就是说,程序的代码的走法也会跟未注册的时候截然不同.因为程序的行为改变了,那么决定它所有行为的代码走法也会发生变化. 二:认识OD的两种断点

Framework7学习笔记之初始化App

一:初始化应用对象 我们想要在js文件中操作app,就需要初始化一个app对象来存储应用本身. 在初始化app时,还可以传递一些参数,对app进行一些个性化定制,如:主题.缓存设置.工具栏.导航栏.通知栏等等对app整体的特性设置. 二:格式实例 var app = new Framework7({ // App root element root: '#app', // App Name name: 'My App', // App id id: 'com.myapp.test', // En

Framework7学习笔记之Page的定义与Page初始化

一:Page 一个page文件定义了一个app页面,它可以定义该页面的导航栏.底部工具栏.中间详细内容等等.  page通过加载到view容器中运行,而view在index.html中定义. index.html定义了app的基本结构:引入样式文件.引入js文件.创建app标签.创建view标签. 因此,page的定义文件 XX.html 不需要在定义head.body等等部分,只需要使用 div 搭建出页面的 状态栏.侧边栏.页面内容(导航栏.主体部分.底部工具栏).(不是每部分都要有,按需搭

Framework7学习笔记之 通知(消息推送)

一:旧版 旧版的通知是通过app对象来添加的,即:myapp.addNotification()就产生一个通知推送. $$('.选择器').on('click', function () { myApp.addNotification({ title: '推送标题', subtitle: '子标题', message: '通知详情', media: 'html代码,可以包含一个图片', onClose: function () { 通知点击事件,如:跳转到某一页面; } }); }); 二:新版

Framework7学习笔记之 块/内容区

一:旧版 内容区用于按一定排版格式添加需要文本内容. 旧版中,内容区用  content-block 类表示,位于内容区内外的文本其排版格式不同:位于内容区内的文本也可以用title.inner.inset等类进行进一步排版. <div class="page-content"> <p>内容区之外的文本,排版为:没有背景色,两边没有边距.</p> <!-- 1:普通内容区 --> <div class="content-b

《ASP.NET MVC 4 实战》学习笔记 9:路由(上)

本书第8章<安全性>相对偏理论,偶感觉比较枯燥故略过,应该不会影响后面的学习...好吧,是我想偷懒... 一.URL路由介绍: 1.默认路由: 当创建一个新的MVC 5应用程序时,默认的项目模板会在RouteConfig.cs文件中创建默认路由,并在Global.asax注册路由: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(&