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: 直接使用标签:{{}},适用于在子项目内切 ...
随机推荐
- JavaScript中的Function(函数)对象详解
JavaScript中的Function对象是函数,函数的用途分为3类: 作为普通逻辑代码容器: 作为对象方法: 作为构造函数. 1.作为普通逻辑代码容器 function multiply(x, y ...
- show slave各项参数解释
how slave status 各个参数的解释 -- mysql 分类: mysql基础2012-08-23 11:03 2315人阅读 评论(0) 收藏 举报 服务器sslfilesqltable ...
- Unity3D 4.x 使用Mecanim实现连击
http://blog.csdn.net/onerain88/article/details/12854817 Unity3D 4.x 版本之后提供了一种新的动画机制Mecanim,虽然目前还支持之前 ...
- 关于seajs
(这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 最近经常听到各种JS前缀的名称,瞬间感觉自己弱爆了,啥都没用过呢,这么下去将来怎么嫁人呢. ...
- js: this,call,apply,bind 总结
对js中的一些基本的很重要的概念做一些总结,对进一步学习js很重. 一.this JavaScript 中的 this 总是指向一个对象,而具体指向那个对象是在运行时基于函数的执行环境动态绑定的,而非 ...
- Java内部类的访问规则
1.内部类可以直接访问外部类中的成员,包括私有 原因:因为在内部类中持有一个外部类的应用,格式:外部类.this class Outer { private int x = 1; c ...
- Linux系统查看系统是32位还是64位方法总结(转)
总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本篇只是整理.梳理这方面的知识,方便自己忘记的时候随时查看. 方法1:getconf LONG_BIT 查看 如下 ...
- vsftp 一键安装包
http://pan.baidu.com/s/1mibAJC8
- svn 提交冲突(目录下删除文件)
[root@v01 webtest]# svn ci -m "delete kkk" svn: Commit failed (details follow): svn: Abort ...
- l中断的实现
转自:http://blog.chinaunix.net/uid-25014876-id-90740.html xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...