GithubHelp home page GithubHelp logo

framework7's People

Contributors

kelichao avatar

Stargazers

 avatar

Watchers

 avatar  avatar

framework7's Issues

【template7】模板引擎

模板的简单使用

	// 模板内容
	var template = `
		<div data-page="home" class="page">
	        <div class="page-content">
	            <div class="content-block">
	                <p>Here are the list of people i know:</p>
	                    <ul>
	                        {{#each people}}
	                            <li>{{firstName}} {{lastName}}</li>
	                        {{/each}}    
	                    </ul>          
	            </div>
	        </div>
	    </div>`;

	// 数据
    var data = {
        people : [
            {
              	firstName: 'John',
              	lastName: 'Doe'
            },
            {
              	firstName: 'Mark',
              	lastName: 'Johnson'
            },
        ]
    };

	// 编译模板这一步可能是将模板缓存,方便之后快速调用
	var compiledTemplate = Template7.compile(template);

	// 使用模板加载数据
	var htmlStr = compiledTemplate(data);

	//将得到的结果输出到指定区域
	$("body").append(htmlStr);

【F7】路由对页面的处理

路由处理页面的方式

  1. Ajax Pages - 从一个指定的URL加载页面,通常是另外一个页面的文件地址(默认行为)。
  2. 通过JS API 创建和加载 动态页面
  3. 如果你的页面已经写在DOM中了,那么你可以直接使用 内联页面,而不用再去加载。
  4. 你可以加载使用 Template7 编写的模板
  5. 最重要的是,你可以在你的应用中混合使用所有上面的这些方法。

使用方法

// 初始化
var myApp = new Framework7();

// 添加视图
var mainView = myApp.addView('.view-main');

// 切换视图中的链接,用以替换内容
mainView.router.load({
    url: "/index.html",
});

// 后退 :切换视图中的链接,用以替换内容
mainView.router.back({
    url: "/demo.html",
});

注意

注意, url, content, pageName 这三个参数,你只能同时使用一个。

加载方式详解

Ajax方式加载页面

  1. 调用视图方法mainView.router.load();
  2. 直接填写链接<a href="index.html" class="back no-animation">

动态页面

// Init app
var myApp = new Framework7();
 
// Init main view
var mainView = myApp.addView('.view-main');
// 动态页面的写法
// 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>`;
 
// 方法一
mainView.router.loadContent(newPageContent);

// 方法二
mainView.router.load({
  content: newPageContent,
  animatePages: false
});

内敛页面

// 启用内敛功能
var mainView = myApp.addView('.view-main', {
    domCache: true //enable inline pages
});

另外页面的page需要加一个cached类才能够使用

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

视图间跳转

dom中添加data-view属性

data-view=".right-view"

【cordova】环境配置以及条件

环境搭建

材料,准备工作

项目 验证安装完成 教程
npm npm -v
npm install -g cordova cordova -v cordova打包教程
jdk javac(安装jdk主要是目录,推荐默认,会安装好jir跟jdk两个目录) jdk安装
sdk adb这个也是需要配环境变量的 sdk环境 sdk下载
ant ant -v

打包步骤

cordova打包教程

1.安装cordova

npm install -g cordova

2.检查环境

$ cordova requirement android

3.创建app目录,文件夹取名为hello

$ cordova create hello
# 并进入hello目录
$ cd hello

4.创建app平台,以及实施打包

$ cordova platform add android --save

5.打包APP

$ cordova build

输出app

目录 : > hello2\platforms\android\build\outputs\apk

【F7】Page 回调函数

Page 回调函数

Page 回调函数可以用来为特定的页面执行特定的代码。Page 回调函数会被 Page 事件有很多优点。

  • Page 回调函数不是事件,所以会有更少的的内存占用和更少的内存泄露。
  • 因为不是事件,所以不用担心如何监听。
  • 有时候会在代码结构上比使用事件更方便。

回调方法

例子

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

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

回调对象

用于触发

var total = myApp.onPageInit('home', function(page){
    console.log("home页面被触发了");
});

total.trigger();// home页面被触发了

初始化页面的回调

【F7】工具栏使用

工具栏只使用

image

工具栏只提供纯UI空间,切换为active类

<!-- 工具栏开始 -->
<div class="toolbar tabbar tabbar-labels">
    <div class="toolbar-inner">
        <a href="#tab1" class="tab-link active">
            <i class="icon demo-icon-1"></i>
            <span class="tabbar-label">Label 1</span>
        </a>
        <a href="#tab2" class="tab-link">
            <i class="icon demo-icon-2">
                <span class="badge bg-red">5</span>
            </i>
            <span class="tabbar-label">Label 2</span>
        </a>
        <a href="#tab3" class="tab-link">
            <i class="icon demo-icon-3"></i>
            <span class="tabbar-label">Label 3</span>
        </a>
        <a href="#tab4" class="tab-link">
            <i class="icon demo-icon-4"></i>
            <span class="tabbar-label">Label 4</span>
        </a>
    </div>
</div>
<!-- 工具栏结束 -->

【F7】通知

通知

不需要页面写html,直接调用接口就可以。

$$('.message').on('click', function () {
    myApp.addNotification({
    	// 主标题
        title: '真是个酷炫狂拽的App',
        // 小标题
        subtitle: '来自土豆的消息',
        // 内容
        message: '地瓜地瓜,土豆呼叫地瓜。在9点方向发现如花,BalaBalaBala',
        // 头像
        media: '<img width="44" style="border-radius:100%" src="http://lorempixel.com/output/people-q-c-100-100-9.jpg">',
        // 关闭按钮回调
        onClose: function () {
            myApp.alert('通知被关闭了~');
        }
    });
});

【F7】页面Pages

页面pages

  • Pages表示页面的意思,在同一个View中的容器. Pages 是必须的,因为所有的页面切换都在这里。
  • 在 main layout(index.html) 中,每一个 Page 都应该放在 Pages 容器中(<div class="pages">),而 Pages 必须是 View 的子元素(<div class="view">)。
    <div class="views">
        <div class="view view-main">
            <!-- Pages是page在同一个View中的容器,是必须的,所有的页面切换都在这里-->
            <div class="pages">
            	<!--每一个Page都应该放在Pages容器中,Pages必须是View的子元素-->
            	<!-- data-page用于对应回调函数,非常有用 -->
                <div class="page" data-page="home">
                    <div class="page-content">
                        <h2>我是Page的demo</h2>
                        <h3>data-page用于对应回调函数,非常有用 </h3>
                        <h4>每一个Page都应该放在Pages容器中,Pages必须是View的子元素</h4>
                    </div>
                </div>
            </div>
            <!-- Pages结束 -->
        </div>
        <!-- View结束 -->
    </div>
    <!-- Views结束 -->

重要属性

1. data-page:

主要用于回调,每一个 page 都有一个 data-page 属性,存储了一个唯一的page名。这个属性不是必须的,但是强烈推荐使用。这个属性在 page 事件中或者在page 回调函数中会非常有用,可以用来帮助我们确定加载的是哪一个页面。

2. page-content:

所有的可见的内容,比如列表和表单等,都应该放在 <div class="page-content"> 中,她是 <div class="page"> 的子元素。这样才能保证正确的样式,布局和滚动。

3. Page 事件:

  • pageInit
  • pageBeforeRemove
  • .....

触发回调事件的方式

// Option 1. Using one 'pageInit' handler for all pages (recommended way):
$$(document).on('pageInit', function (e) {
  // Do something here when page loaded and initialized
})
 
// Option 2. Using live 'pageInit' event handlers for each page (not recommended)
$$(document).on('pageInit', '.page[data-page="about"]', function (e) {
  // Do something here when page with data-page="about" attribute loaded and initialized
}) 

4.page数据

用于确定加载到的页面到底是哪一个,可以在一个handler中处理不同的页面了:

// In page callbacks:
myApp.onPageInit('about', function (page) {
  // "page" variable contains all required information about loaded and initialized page 
})
 
// In page events:
$$(document).on('pageInit', function (e) {
  // Page Data contains all required information about loaded and initialized page 
  var page = e.detail.page;
})

获得的page属性

  • page.name
  • page.url
  • page.query
  • page.view
  • ....

【F7】导航栏使用

导航栏

	<!-- 导航栏放在body內,可以放在page内部 --> -->
	<div class="navbar">
	    <div class="navbar-inner">
	        <div class="left">
	            <a href="#" class="link">
	                <i class="icon icon-back"></i>
	                <span>Back</span>
	            </a>
	        </div>
	        <div class="center">Center</div>
	        <div class="right">
	            <a href="#" class="link">
	                <i class="icon icon-bars"></i>
	                <span>Menu</span>
	            </a>
	        </div>
	    </div>
	</div>
	<!-- 导航栏结束 -->

隐藏导航栏

// 全局选择,隐藏选中的导航栏
myApp.hideNavbar(".navbar");// showNavbar

显示导航栏

// 隐藏当前page导航栏
// 列如:

// 当前视图
var mainView = myApp.addView('.view-main');
mainView.hideNavbar();// showNavbar

【F7】视图views

标准视图demo

    <!-- Views 是应用主容器。一个应用中只能有一个 Views -->
    <div class="views">
        <!-- View 可以放在应用中的任何位置,所有的可见View都应该放在Views中。用来做页面切换的动画。-->
        <!-- 主视图会有一个 view-main 的class,会默认把所有的链接加载的页面放进主视图中。 pushState hash navigation 的时候也是只在主视图中工作。 -->
        <div class="view view-main">
            <!-- Navbar-->
            <!-- Pages -->
            <div class="pages">
                <div class="page" data-page="home">
                    <div class="page-content">
                        <h2>我是视图内容</h2>
                        <!-- 额外的视图外部需要包裹的是page容器 -->
                        <a href="test1.html">前往其他视图</a>
                    </div>
                </div>
            </div>
            <!-- Pages结束 -->
            <!-- Toolbar-->
        </div>
        <!-- View结束 -->
    </div>
    <!-- Views结束 -->

配套js需要的代码

// 初始化框架
var myApp = new Framework7({
  // ...
});   

// 添加视图,f7框架的视图都是需要注册的,事件不注册,就无法跳转
var mainView = myApp.addView('.view-main', {
  dynamicNavbar: true
})

老版视图介绍

views

  • View 在应用中是一个独立的部分,她有自己的设置、页面切换和历史。每一个视图都可以有不同的导航栏、工具栏布局和不同的样式。所以View就像是嵌在应用中的另一个应用。这种功能可以让你来分别操作一个应用中的不同部分。

  • Views 是所有可见View的容器(不包括Modal和Panel)。Views 是你的应用主容器。一个应用中只能有一个 Views

    <!-- Views -->
    <div class="views">
      <!-- Your main view -->
      <div class="view view-main">
        <!-- Navbar-->
        <!-- Pages -->
        <!-- Toolbar-->
      </div>
      <!-- Another view -->
      <div class="view another-view">
        <!-- Navbar-->
        <!-- Pages -->
        <!-- Toolbar-->
      </div>          
    </div>
    <!-- Views结束 -->

初始化

var myApp = new Framework7({
  // ...
});   
 
// Initialize views 
// 初始化视图,
var mainView = myApp.addView('.view-main', {
  dynamicNavbar: true,// 在当前View中是否使用动态导航栏
  url: undefined,// View 默认的 url,如果没有定义,则就是当前文件的路径
  domCache: false,// 是否要进行dom缓存
  // 另一个View的CSS选择器,默认情况下,所有的链接都会被加载到当前的页面。
  // 可以指定讲当前view中链接加载到另一个View中。
  linksView: undefined
})

var anotherView = myApp.addView('.another-view');

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.