ember.js:使用笔记6 子项目的前进与后退
如下代码会根据model产生不同的table项,在进行其他设置后,一般是根据id来跳转到相应项目子项中;
{{#each}}
{{#link-to "tabls" this}}{{name}}{{/link-to}}
{{/each}}
这时候我们可能需要一额外的按钮而不是直接点击连接进行子项目的前进与后退,可采用如下方法:
方法1:
在对应controller内设置:
nextId : function(){
var arrs = //获得对应子项目的content;
var thisId = //获得当前项目的id;
for(var idx=0; idx < arrs.length; idx++) {
if(arrs[idx].id > thisId) break;
}
idx = idx < arr.length ? idx : 0;
return arrs[idx].id;
}
prevId : function(){
var arrs = ..;
var thisId = ..;
for(var idx = arrs.length-1; idx >=0; idx--) {
if(arrs[idx].id < thisId) break;
}
idx = idx >=0 ? : arrs.length - 1;
return arrs[idx].id;
}
然后在相应模版中设置:
{{#link-to "testResult" nextId}}next{{/link-to}}
{{#link-to "testResult" prevId }}prevId{{/link-to}}
//这里说明连接是可以通过直接使用id跳转;
方法2:
在对应controller内设置:
nextId: function() {
var quizs = //获取项目,
index = quizs.indexOf(this.get("model"));
return quizs.objectAt(index+1);
}.property("model.id"),
prevId: function() {
var quizs = //获取项目,
index = quizs.indexOf(this.get("model"));
return quizs.objectAt(index-1);
}.property("model.id"),
然后在模版中设置:
{{#if nextId}}
{{#link-to "testResult" nextId}}next{{/link-to}}
{{/if}}
{{if prevId}}
{{#link-to "testResult" prevId }}prevId{{/link-to}}
{{/if}}
//这里说明连接也可以通过传入对应子项目跳转;
方法3:
在对应controller内设置:
advanceQuiz: function(delta) {
var index,length,quizs;
quizs = //获得项目;
length = quizs.get("length");
index = (quizs.indexOf(this.get("model")) + delta + length) % length;
return this.transitionToRoute("testResult",quizs.objectAt(index));
//这里使用transitionToRoute,注意后面的route要书写正确;
},
actions: {
nextId: function() {
return this.advanceQuiz(-1);
},
prevId: function() {
return this.advanceQuiz(1);
}
},
然后在模版中直接设置action就可以了,这里并没有使用链接,而是使用transitionToRoute方法来跳转;
ember.js:使用笔记6 子项目的前进与后退的更多相关文章
- 【前端】Ember.js学习笔记
Model 在默认情况下,model钩子返回的值,会设置为关联的控制器的model属性.例如,如果App.PostsRoute通过model钩子返回了一个对象,这个对象会设置为App.PostsCon ...
- ember.js学习笔记
启动服务器 ember server 访问localhost:4200 创建新的路由:ember generate route 路由名称,运行此命令会同时创建一个/templates/.XXXhbs模 ...
- ember.js:使用笔记9 开始单元测试
单元测试被限定在一个范围内,并且不需要Ember应用运行. 使用前准备: 加入Ember-QUnit:获取一系列测试助手帮助单元测试:加入 mian.js; 加入根元素(与集成测试的时候一样):App ...
- ember.js:使用笔记8 加载测试与集成测试
emberjs使用的测试工具为qunit.js: 加载:将runner.js添加到Index.html:大致内容: if (window.location.search.indexOf("? ...
- ember.js:使用笔记2-数据删除与存储
在模版中写好响应操作触发的action之后,可以在controller:actions中设置了,需要注意的是对数据的操作一般都是对单个object进行操作,所以先要使用笔记1中的方法使用ObjectC ...
- ember.js:使用笔记1-数组数据统一显示
ember中数据一般都是以array的形式存储的,控制器使用,如: App.DataController = Em.ArrayController.extend({}); 想要在一个页面中输出所有的数 ...
- ember.js:使用笔记5 使用view
在已经设置route的情况下,以table为例,可以如下设置,范围为对应的模版: App.TableView = Em.View.extend({ }); App.TableIndexView = E ...
- ember.js:使用笔记10 常用方法
init: controller中初始化方法, //注意该方法是在其他方法之前,所以取不出this,model等值: 跳转:this.tra ...
- ember.js:使用笔记7 页面中插入效果
在某些情况下,我们需要根据数据生成某些效果:由于每个模版的controller可能不同,在不同页面之间跳转可能会无法随即更新的问题. controller: 直接使用标签:{{}},适用于在子项目内切 ...
随机推荐
- App架构设计经验谈:服务端接口的设计
App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的 ...
- PHP的SQL注入攻击的技术实现以及预防措施
最近在折腾 PHP + MYSQL 的编程.了解了一些 PHP SQL 注入攻击的知识,总结一下经验.在我看来,引发 SQL 注入攻击的主要原因,是因为以下两点原因: 1. php 配置文件 php. ...
- [BZOJ2683][BZOJ4066]简单题
[BZOJ2683][BZOJ4066]简单题 试题描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x ...
- Android创建桌面快捷图标
<!-- 添加快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL ...
- qq空间答案
2073693795 懂得人自然会懂
- Java锁之自旋锁详解
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) .这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类 ...
- 对于sharepoint 的解决方案的实际说明
对于sharepoint 的解决方案 实际上就是cab的包 你把***.wsp改为***.cab我们就可以查看这个包中的所有内容了
- css 之盒子模型
display: none inline block float :none right left clear left right both 清除浮动 是清楚它之前的左 ...
- Java for LeetCode 075 Sort Colors
Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...
- 纯css3 加载loading动画特效
最近项目中要实现当页面还没有加载完给用户提示正在加载的loading,本来是想做个图片提示的,但是图片如果放大电脑的分辨率就会感觉到很虚,体验效果很不好.于是就采用css3+js实现这个loading ...