Ember.js实现ajax 加载中效果

Ember.js 里,需要大量处理 ajax 请求,又因为是单页面应用,ajax 正在加载就更需要视觉上的反馈 – 否则用户会简单地认为他点击了却没有反应。譬如我有这样一个页面:

 代码如下 复制代码

App.Router.map(function() {
  this.resource('user', function() {
    this.route('info');
  };
};

从 /user/index 路由(点击链接)到 /user/info,info 页面需要处理大量 ajax 请求,请求由 UserInfoRoute 的 model 勾子发出,在 ajax 返回前,user/info 模板不会渲染,从视觉上说,就好像点击了链接却没有反应 – 但其实 ajax 正在加载中。

为了给用户视觉反馈,Ember.js 提供了 loading1 事件勾子:

 代码如下 复制代码

App.UserInfoRoute = Ember.Route.extend({
  model: function() {
    //some promise here
    //return $.get('http://www.111cn.net/ blog/');
  },
  actions: {
    loading: function(transition, originRoute) {
      // 在这里,我可以提供一种 ajax 正在加载中的指示
    }
  }
});

就我个人来说,我不十分喜欢上面的处理方法,因为每个你要进入的路由,需要视觉反馈的话,都要定义一个 loading 事件勾子。

Ember.js 还提供一个方法,默认的 loading。譬如上面的路由定义里,其实默认允许以下 loading 路由:

1.user.loading
2.loading

我只需要定义一个统一的 user/loading 模板:

 代码如下 复制代码

<script type='text/x-handlebars' data-template-name='user/loading'>
// 把 ajax 加载中的效果样式定义在这里
</script>

之后从 /user/index 路由到 /user/info 里,如果后者需要处理大量 ajax 数据而未能马上返回,Ember.js 会帮我们暂时切换到 /user/loading 中 – 这里就是我们定义的视觉反馈。ajax 请求数据返回后,我们就自动进入 /user/info

时间: 2024-12-21 17:24:43

Ember.js实现ajax 加载中效果的相关文章

jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较_jquery

想要添加这个效果,先来弄明白页面的加载和事件执行顺序,看这个简单例子: <html xmlns="http://www.w3.org/1999/xhtml"> <head > <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>验证加载顺序</title> <script src=

使用Bootstrap3和Ladda UI实现的多种按钮“加载中”效果体验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在线演示 大家在开发基于web的网站或者web应用中,常常在AJAX调用的过程中需要提示用户并且展示相关的"加载中"效果,类似的UI设计也非常多,比如,当点击一个按钮后,在它的旁边显示一个 "加载中" 文字,或者是添加一个"旋转GIF"动画效果图. 在今天这个教程中,我们将介绍来一个

android调用H5显示加载中效果的示例代码

我们在看有些应用在引入h5的时候经常会有一个进度条在转,显示加载的意思,那么这个东西其实一般是我们android端做的事(不要把所有的事都推给h5~~~),其实实现起来很简单, ok 废话不多说,上代码吧 wv.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view,

JS、CSS加载中的小问题探讨_基础知识

在js脚本中,存在两个window.onload 复制代码 代码如下: window.onload = function(){ alert("aaa"); }; window.onload = function(){ alert("bbb"); }; 只会执行一个,这是本身函数的设定,值得注意的是,弹出的不是aaa,而是bbb,执行的是最后一个 在css文件中,css样式中 复制代码 代码如下: #checks{ padding-left:20px;padding-

三种方式实现自定义圆形页面加载中效果的进度条

转自 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=76872 一.通过动画实现 定义res/anim/loading.xml如下: <?xml version="1.0" encoding="UTF-8"?> <animation-list android:oneshot="false" xmlns:android="http://schemas

Android 三种方式实现自定义圆形页面加载中效果的进度条

转载:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=76872 一.通过动画实现 定义res/anim/loading.xml如下: [java] view plaincopy <?xml version="1.0" encoding="UTF-8"?>   <animation-list android:oneshot="false"   xmlns:an

使用jQuery和CSS3实现的“加载中”效果按钮 极客标签 - 做最棒的极客知识分享平台

来源:http://www.gbtags.com/gb/share/2812.htm#193972-hi-1-18016-20bb88bda5c2677bbca01e6631afa70a

Ajax加载菊花loding效果_AJAX相关

Ajax 异步请求的时候,一般都会利用一个动态的 gif小图片来制作一个Ajax Loading ,以便增加用户体验. 这里我们使用Spin.js ,该 js 脚本压缩后5k,可以不用任何图片,任何外部的CSS样式,就可以创建一个Ajax Loading 指示器 Spin.js 的在线设计.演示及下载地址为:http://fgnass.github.io/spin.js/ 我们可以在链接页面中,动态设置样式同时会自动生成样式的配置脚本: Spin.js 用法极其的简单: 显示 spinner v

ajax-《html》中,正在加载中的效果是怎样出来的?

问题描述 <html>中,正在加载中的效果是怎样出来的? 有的时候打开一个页面,会出来转圈的加载效果,这个效果是怎样实现的,是和ajax有关吗? 解决方案 使用的DIV 里面书写 "正在加载中..." 使用ajax 在ajax执行前调用 是DIV 显示出来, 并使其所在的 背景 变灰 不可操作,在ajax susess方法中,关闭 正在加载显示,并显示其他可操作界面 解决方案二: 你的猜测没错,缺省的情况下显示一张loading图,转呀转. 然后出发一个ajax加载后台数据