数据获取

framework7自带request方法 ,

var app = new Framework7({
...
});
app.request(parameters) 或者 Framework7.request(parameters)
两者都一样

一个完整的请求可能长下面这样

app.request.get(url, data, success, error, dataType)

app.request.get("res.xxx", {name:'xxx'}, function(data){
console.log(data);
}, function(){
console.log("获取数据失败");
}, 'json');
并不推荐这种方式 推荐下面这种,清晰明了
app.request.get({
url:"res.xxx",
data:{name:"xxx"},  
success:function(data){
console.log(data)
},
error:function(){
console.log("数据获取失败")
},
dataType:"json"
});

获取数据之后就要传数据,有几种方法

通过路由

framework7给路由提供一个async方法

routes:[
{
path: '/about/', //componentUrl:"./pages/about.html",
async: function (routeTo, routeFrom, resolve, reject) {
app.request.get('res.xxx', function (data) {
resolve(
{
componentUrl:"./pages/about.html"
},                 
{
context: { //传数据
users: data,
},
}
);
});
}
}
]
注意,除非你在 async 方法中执行了 resolve 或 reject ,否则路由请求将会中断!

about.html 是个 template组件,所以routers  长这样

{
path:'xxx',
componentUrl:"xxx.html"
}

如果是个完整的html

{
path:'xxx',
url:"xxx.html"
}

还有一些别的参数,参考官方文档

async方法可以用在 当用户未登录时拦截跳转,然后导航到登录页

在about.html页我们可以取到这个users

<template>
<div class="page">
about
<h1>{{Name}}</h1>
</div>
</template>
<style></style>
<script>
return{
data:function(){ //数据相关
let name=this.$route.context.users;
return { //返回要绑定的数据
Name:name
}
}
}
</script>

还可以放在data里

return{
data:function(){
app.request.get({
url:"xxx",
...
success:function(data){
var name=data.name;
}
});
return {
Name:name
}
}
}

看看return

return{
data:function(){
...
},
methods:{
showHello:function(){
app.dialog.alert("Hello");
}
},
on:{ //on里面的函数,在不同的生命周期执行
pageMounted:function(e){}, pageInit:function(e){
this.showHello();
}, pageBeforeIn:function(e){}, pageAfterIn:function(e){}
}
}

这两种方法会有点问题,当你获取数据很慢时,会发现你能在pageInit里打印出data,但没法绑到页面上,原因在于取到data时 ,页面已经渲染完成,不会重新渲染,直到3.31版加了个$setState方法,

return{
data:function(){
return {
Name:""
}
},
methods:{
getData:function(func){
app.request.get({
url:"res.xxx",
...
success:function(data){
func(data);
}
});
}
},
on:{
pageInit:function(){
let self=this;
self.getDate(function(data){
self.$setState({
Name:data.name
});
});
}
}
}

这样就不用担心dom渲染完而数据还没取到

$setState是用VDOM实现的。我理解的是,页面渲染时生成一个dom树,执行$setState时,会在内存中生成一个dom树,然后对两个dom进行对比,用内存中变化的节点替换浏览器中原来的节点,然后让浏览器重新渲染这个节点。

framework7 入门(数据获取和传递)的更多相关文章

  1. Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理

    Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7 昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Fr ...

  2. (二)cordova+framework7入门——笑笑APP

    [前言] framework7确实做的很赞,但是一直各种原因没有做什么app, 这个感觉就像大厨遇到百年难见的好材料,不炒个菜憋的慌, 机缘巧合周一周二两个晚上做了一个简单app,先看下效果: ios ...

  3. Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7

    昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Framework7 有哪些不同?现在开发到什么程度了? .今天,我们开学习全功能.NET(Full .NET)下使用EF ...

  4. Framework7 - 入门教程(安装、配置、创建一个H5应用)

    1,Framework7介绍 (1)Framework7 是一个开源免费的框架.可以用来开发混合移动应用(原生和 HTML 混合)或者开发 iOS & Android 风格的 WEB APP. ...

  5. framework7 入门(数据绑定)

    数据绑定是用template7,官网,framework7内置template7,不用单独下载,下面介绍一些简单的绑定 当你的数据是个数组 return{ data:function(){ let i ...

  6. framework7 入门(基础布局)

    个人认为framework7是个很好的移动端框架,自带路由.下拉刷新.无限加载.时间线.各种dialog.环形图等,基本能满足大部分app的需求,可以和vue,webpack 等各种搭配. 这里讲一下 ...

  7. dubbox ExceptionMapper Filter request response 数据获取 数据传递

    dubbx虽然是基于jboss的resteasy实现restfull,但是对resteasy原生的配置却不支持(可能是考虑到dubbo本事的设计模式及实现难度,但是和大部分framework的设计风格 ...

  8. 前端移动框架Framework7入门

    正版官网:https://framework7.io/  (英文) 对应国内:http://www.framework7.cn/ (中文) 本地构建步骤(Demo级别) 1.HTML结构 2.引入Fr ...

  9. Ember.js入门教程、博文汇总

    第一章 对象模型 Ember.js 入门指南——类的定义.初始化.继承 Ember.js 入门指南——类的扩展(reopen) Ember.js 入门指南——计算属性(compute properti ...

随机推荐

  1. CSS div内文字显示两行,超出部分省略号显示

    1. 概述 1.1 说明 在项目过程中,有时候需要控制div内文字最多显示两行,超出的使用省略号进行处理.使用识别码/前缀-webkit进行处理可直接得到相应效果. 1.1 -webkit WebKi ...

  2. 小程序:navigateBack()修改数据

    1.获取当前页面js里面的pages里的所有信息var pages = getCurrentPages(); 2. -2上一个页面    -3是上上个页面 var prevPage = pages[p ...

  3. json & pickle 模块

    用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 dump和load 都各自使用一次 py ...

  4. eclipse导入maven时,pom文件的project一直报错(Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.12.)

    这里有两种解决办法. 一:右键项目->maven->update project勾选上Force Update of Snapshots/Releases然后ok就可以了. 二:如果第一种 ...

  5. Windows Internals 笔记——线程优先级

    1.每个线程都被赋予0(最低)~31(最高)的优先级数.当系统确定给哪个线程分配CPU时,它会首先查看优先级为31的线程,并以循环的方式进行调度.如果有优先级为31的线程可供调度,那么系统就会将CPU ...

  6. GitHub项目功能理解

    目录 github账号看板使用方式 code issues Pull Requests Projects Insights Settings date: 2019-4-26 author:yangxi ...

  7. 实现定时备份mysql数据库并把备份数据库邮件发送

    一.先来看备份mysql数据库的命令 1 mysqldump -u root --password=root --database abcDataBase > c:/abc_backup.sql ...

  8. Python 实现 KD-Tree 最近邻算法

    这里将写了一个KDTree类,仅实现了最近邻,K近邻之后若有时间再更新: from collections import namedtuple from operator import itemget ...

  9. UOJ#375. 【ZJOI2018】迷宫

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ375.html 题解 首先,我们可以建出一个 k 个点的自动机,第 i 个点表示当前数对 k 取模为 i- ...

  10. notes for lxf(四)

    类名首字母通常大写 创建实例 类名 +() __init__方法 创建实例时把一些属性绑上去 __init__方法第一参数永远是self 表示船舰的实例本身 类是实例的模板 实例是一个一个具体的对象 ...