如下代码会根据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 子项目的前进与后退的更多相关文章

  1. 【前端】Ember.js学习笔记

    Model 在默认情况下,model钩子返回的值,会设置为关联的控制器的model属性.例如,如果App.PostsRoute通过model钩子返回了一个对象,这个对象会设置为App.PostsCon ...

  2. ember.js学习笔记

    启动服务器 ember server 访问localhost:4200 创建新的路由:ember generate route 路由名称,运行此命令会同时创建一个/templates/.XXXhbs模 ...

  3. ember.js:使用笔记9 开始单元测试

    单元测试被限定在一个范围内,并且不需要Ember应用运行. 使用前准备: 加入Ember-QUnit:获取一系列测试助手帮助单元测试:加入 mian.js; 加入根元素(与集成测试的时候一样):App ...

  4. ember.js:使用笔记8 加载测试与集成测试

    emberjs使用的测试工具为qunit.js: 加载:将runner.js添加到Index.html:大致内容: if (window.location.search.indexOf("? ...

  5. ember.js:使用笔记2-数据删除与存储

    在模版中写好响应操作触发的action之后,可以在controller:actions中设置了,需要注意的是对数据的操作一般都是对单个object进行操作,所以先要使用笔记1中的方法使用ObjectC ...

  6. ember.js:使用笔记1-数组数据统一显示

    ember中数据一般都是以array的形式存储的,控制器使用,如: App.DataController = Em.ArrayController.extend({}); 想要在一个页面中输出所有的数 ...

  7. ember.js:使用笔记5 使用view

    在已经设置route的情况下,以table为例,可以如下设置,范围为对应的模版: App.TableView = Em.View.extend({ }); App.TableIndexView = E ...

  8. ember.js:使用笔记10 常用方法

    init: controller中初始化方法,                               //注意该方法是在其他方法之前,所以取不出this,model等值: 跳转:this.tra ...

  9. ember.js:使用笔记7 页面中插入效果

    在某些情况下,我们需要根据数据生成某些效果:由于每个模版的controller可能不同,在不同页面之间跳转可能会无法随即更新的问题. controller: 直接使用标签:{{}},适用于在子项目内切 ...

随机推荐

  1. 漫长Appium之路(二)——Appium安装与使用总结

    前面介绍了iOS自动化工具的Appium所需的虚拟机环境,接下来介绍下Appium的安装与使用方法,这个足足折腾我将近一个星期.网上没有什么详细的资料,对于遇到的各种各样问题也没用提供明确的解决方法. ...

  2. spring JTA多数据源事务管理详细教程

    <context:annotation-config /> <!-- 使用注解的包路径 --> <context:component-scan base-package= ...

  3. Scheme笔记(1)

    (define pi 3.14159) (define radius 10) (* pi (* radius radius)) (define circumference (* 2 pi radius ...

  4. sqlite 跨数据库查询

    try { $dbh = new PDO($dbrootemp, null, null); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_ ...

  5. Android之项目推荐使用的第三方库,有助于快速开发,欢迎各位网友补充

    1. 使用上拉更多,下拉刷新:https://github.com/JosephPeng/XListView-Android这个是github上面更为火爆的:https://github.com/ch ...

  6. 不同版本的name可以重复

    - validates :name, presence: true, uniqueness: { conditions: -> { where(:state.ne => 2) } }, l ...

  7. 搭建自己的ngrok服务

    转载:http://tonybai.com/2015/03/14/selfhost-ngrok-service/ 在国内开发微信公众号.企业号以及做前端开发的朋友想必对ngrok都不陌生吧,就目前来看 ...

  8. [另开新坑] 算导v3 #26 最大流 翻译

    26 最大流 就像我们可以对一个路网构建一个有向图求最短路一样,我们也可以将一个有向图看成是一个"流量网络(flow network)",用它来回答关于流的问题. Just as ...

  9. 15 day 1代碼

    第一题 用堆维护. #include <cstdio> #include <algorithm> #include <queue> int n,i,f[400000 ...

  10. 【JAVA、C++】LeetCode 003 Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters. For example, ...