码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-02-12 18:41:58      阅读:1367      评论:0      收藏:0      [点我收藏+]

标签:parameter   函数的参数   osi   doc   cas   related   targe   http   事件   

 

一:Page

   一个page文件定义了一个app页面,它可以定义该页面的导航栏、底部工具栏、中间详细内容等等。
  page通过加载到view容器中运行,而view在index.html中定义。

  index.html定义了app的基本结构:引入样式文件、引入js文件、创建app标签、创建view标签。

  因此,page的定义文件 XX.html 不需要在定义head、body等等部分,只需要使用 div 搭建出页面的 状态栏、侧边栏、页面内容(导航栏、主体部分、底部工具栏)。(不是每部分都要有,按需搭建即可)

  【注:view组件中也可以通过div搭建视图的 导航栏、二级导航栏、popup菜单等,但页面内容主体部分仍然需要通过 pages div 来引入或直接在其中定义一个page

 

二:定义page文件

    新建一个 页面名.html 文件,不需要在定义head、body等等部分、不需要导入样式、js文件,只需用div搭建页面内容即可。

<div class="page" data-name="页面名">
  <div class="page-content">
    页面内容:
          可选:状态栏、侧边栏、导航栏、list、滚动视图、工具栏等等
  </div>
</div>

 

三:page的跳转

    可以通过 <a> 标签来加载、跳转页面。

 

四:page的生命周期函数

   1)旧版

    针对page的操作,最多就是在page的生命周期中进行一些操作,如:页面初始化时进行一些数据赋值等。

    格式:

// Option 1. 为所有page的init事件定义相应函数
$$(document).on(‘pageInit‘, function (e) {
  // 在这里根据page的不同进行不同的操作

  var page = e.detail.page;//获取该事件发生的page
var pageName = page.name;//获取page名称
//根据pageName不同,进行不同操作

 }) // Option 2. 为每个page的init事件逐一定义函数(不推荐)【太分散】 $$(document).on(‘pageInit‘, ‘.page[data-page="about"]‘, function (e) { // Do something here when page with data-page="about" attribute loaded and initialized
  var page = e.detail.page;//获取该事件发生的page;
//通过page对象,调用一些page的属性 或者 方法。
})          

    事件列表:

EventTargetDescription
pageBeforeInit Page Element<div class="page"> 当Framework7把新页面插入DOM的时候会触发
pageInit Page Element<div class="page"> 当Framework7初始化页面的组件的时候会触发
pageReinit Page Element<div class="page"> This event will be triggered when cached page becomes visible. It is only applicaple for Inline Pages (DOM cached pages)
pageBeforeAnimation Page Element<div class="page"> 当页面初始化完成并且可以做动画的时候触发
pageAfterAnimation Page Element<div class="page"> 在页面动画完成之后触发
pageBeforeRemove Page Element<div class="page"> Page从DOM中移除之前就会触发这个事件。如果你希望做一些解除事件绑定或者销毁一些插件的时候,这个方法是很有用的。
pageBack Page Element<div class="page"> 在返回上一页动画执行之前就会触发这个事件。和 "pageBeforeAnimation" 的不同之处在于,这个事件在老页面上也会触发,也就是那个从中间滑动到右边的页面。
pageAfterBack Page Element<div class="page"> 返回上一页动画执行完成之后触发这个事件。同样,区别于"pageAfterAnimation",他也会在老页面上触发。

    page的内置属性列表:

page.name 就是 data-page 设定的名称
page.url 当前页面的URL
page.query 当前页面的get参数,是一个对象。假设你的页面URL是 "about.html?id=10&count=20&color=blue",那么query就是:
{
  id: ‘10‘,
  count: ‘20‘,
  color: ‘blue‘
}                  
page.view object. 包含当前页面的view对象(前提是view已经初始化完成)
page.container Page 对应的 HTMLElement
page.from string - 当前页面从哪个方向加载进来。如果是新加载的页面,则为"right",如果是返回上一步的页面,则为"left"
page.navbarInnerContainer navbar-inner" 对应的 HTMLElement,只有动态导航栏才有。
page.swipeBack boolean。当前页面是否是滑动返回的。只有在 onPageBefore/AfterAnimation 回调函数/事件 中才可以访问。
page.context object. 这个页面的 Template7 上下文
page.fromPage object. 上一个页面的pageData

 

    2)新版

    格式:与旧版一样。

// Option 1. Using one ‘page:init‘ handler for all pages
$$(document).on(‘page:init‘, function (e) {
  // Do something here when page loaded and initialized
})

// Option 2. Using live ‘page:init‘ event handlers for each page
$$(document).on(‘page:init‘, ‘.page[data-name="about"]‘, function (e) {
  // Do something here when page with data-name="about" attribute loaded and initialized
})

    事件列表:

EventTargetDescription
page:mounted Page Element<div class="page"> Event will be triggered when new page just inserted to DOM
page:init Page Element<div class="page"> Event will be triggered after Framework7 initialize required page‘s components and navbar
page:reinit Page Element<div class="page"> This event will be triggered in case of navigating to the page that was already initialized.
page:beforein Page Element<div class="page"> Event will be triggered when everything initialized and page is ready to be transitioned into view (into active/current position)
page:afterin Page Element<div class="page"> Event will be triggered after page transitioned into view
page:beforeout Page Element<div class="page"> Event will be triggered right before page is going to be transitioned out of view
page:afterout Page Element<div class="page"> Event will be triggered after page transitioned out of view
page:beforeremove Page Element<div class="page"> Event will be triggered right before Page will be removed from DOM. This event could be very useful if you need to detach some events / destroy some plugins to free memory

    page数据:

page.app object Initialized app instance
page.view object View instance that contains this page (if this View was initialized)
page.router object Router instance that contains this page (if this View was initialized). Same as page.view.router
page.app string Initialized app instance
page.name string Value of page‘s data-name attribute
page.el HTMLElement Page element
page.$el object Dom7 instance with Page element
page.navbarEl HTMLElement Related navbar element for this page. Available only in iOS theme with dynamic navbar enabled.
page.$navbarEl object Dom7 instance with related navbar element for this page. Available only in iOS theme with dynamic navbar enabled.
page.from string Page position before transition or direction of where this Page comes from. It will be next if you load new page, previous - if you go back to this page, or current if this page replaces the currently active one.
page.to string New page position or where this page goes to. Can be same nextprevious or current
page.position string Alias for page.from
page.direction string Direction of page transition (if applicable). Can be forward or backward
page.route object Route associated with this page
page.pageFrom object Page data of the page that was currently active before this new page.
page.context object Template7 context that was passed for this page when using Template7 pages
page.fromPage object Page Data object of the previously active page

       

 五:回调函数

    上面的方法中,还需要通过参数e获取page对象,比较麻烦。

    F7提供了回调函数,针对上面的事件可以触发回调函数,回调函数的参数会自动把page对象传递过来,十分方便。

    格式:

myApp.onPageBeforeInit(pageName, callback(page)) - 当Framework7把新页面(必须带有data-page属性)插入到DOM的时候会触发。

  • pageName - string - 页面的 "data-page" 属性
  • callback(page) - function - 要执行的回调. 会传入一个 Page Data 对象作为参数

myApp.onPageInit(pageName, callback(page)) - 当Framework7初始化一个页面(必须带有data-page属性)的组件和导航栏的时候会触发。

  • pageName - string - 页面的 "data-page" 属性
  • callback(page) - function - 要执行的回调. 会传入一个 Page Data 对象作为参数

myApp.onPageReinit(pageName, callback(page)) - "callback" function will be executed for specified cached page (with "pageName" data-page attribute) that becomes visible. It is only applicaple for Inline Pages (DOM cached pages)

  • pageName - string - expected page‘s "data-page" attribute
  • callback(page) - function - callback function that will be executed. As an argument it receives Page Data object

myApp.onPageBeforeAnimation(pageName, callback(page)) - 当一个页面(有 data-page 属性)初始化完成并且可以开始做动画的时候触发

  • pageName - string - 页面的 "data-page" 属性
  • callback(page) - function - 要执行的回调. 会传入一个 Page Data 对象作为参数

myApp.onPageAfterAnimation(pageName, callback(page)) - 当一个页面(有 data-page 属性)动画完成之后会触发

  • pageName - string - 页面的 "data-page" 属性
  • callback(page) - function - 要执行的回调. 会传入一个 Page Data 对象作为参数

myApp.onPageBeforeRemove(pageName, callback(page)) - 当一个页面(有 data-page 属性)从DOM移除之前会触发

  • pageName - string - 页面的 "data-page" 属性
  • callback(page) - function - 要执行的回调. 会传入一个 Page Data 对象作为参数

myApp.onPageBack(pageName, callback(page)) - 当页面开始执行返回动画之前调用。区别于 "onPageBeforeAnimation", 这个函数在老的页面上也会调用,也就是从中间向右滑动的那个页面。

  • pageName - string - 你要操作的page的 "data-page" 指定的名字
  • callback(page) - function - 回调函数。这个函数会接收一个 Page Data 对象作为参数。

myApp.onPageAfterBack(pageName, callback(page)) - 当页面开始执行返回动画完成之后调用。区别于 "onPageBeforeAnimation", 这个函数在老的页面上也会调用,也就是从中间向右滑动的那个页面。

  • pageName - string - 你要操作的page的 "data-page" 指定的名字
  • callback(page) - function - 回调函数。这个函数会接收一个 Page Data 对象作为参数。

 

六:让页面在app初始化之前初始化

    因为我们在js文件中是先创建的app对象,在定义各个页面的回调函数的,所以app初始化时不能获取到页面的回调函数的结果

    对于这种情况,我们可以将app的初始化动作改为手动,在页面的回调函数之后执行:

var myApp = new Framework7({
  init: false //Disable App‘s automatica initialization
});          
 
//Now we add our callback for initial page
myApp.onPageInit(‘home‘, function (page) {
  //Do something here with home page
});
 
//And now we initialize app
myApp.init();

 

  

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

标签:parameter   函数的参数   osi   doc   cas   related   targe   http   事件   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!