Ember的一些高级应用场景解决方案
2014-02-17 15:07
260 查看
1.一个route中包含多个请求.
官方给出的路由的例子,都是一个路由的model方法中一个请求,有很多情况,我们需要有多个请求,那怎么办呢?
很简单,model方法的规则是返回一个promise对象或者直接的对象或数组。那么我们可以利用Ember.RSVP.all,或者jQuery里的$.when, 他们都是实现类似功能的,多个promise对象全部执行完成时才执行then里的内容。
这里大家如果不懂,请自行研究Promise/A规范。
2.异步计算属性
这种用法我自己研究出来的,觉得很好用,分享给大家。
注意:这种计算属性只能用于模版中,因为模版会自动更新。如果你想在自己写的js中或者这个异步属性,就有限制,不能在请求返回前使用。不过这种情况很少遇到。大多情况下,可以安全使用。如果真的遇到在js中获取的这个属性值与预期不符,那还是在route的model方法中去返回,setupController方法中赋值吧。
官方给出的路由的例子,都是一个路由的model方法中一个请求,有很多情况,我们需要有多个请求,那怎么办呢?
很简单,model方法的规则是返回一个promise对象或者直接的对象或数组。那么我们可以利用Ember.RSVP.all,或者jQuery里的$.when, 他们都是实现类似功能的,多个promise对象全部执行完成时才执行then里的内容。
这里大家如果不懂,请自行研究Promise/A规范。
ResourceMgr.ResourceStrategyRoute = Ember.Route.extend({ model: function(params){ var allStrategies = this.store.find("strategy"); var resourceStrategies = this.store.find("strategy", { resourceId: resourceId }); return Ember.RSVP.all([allStrategies, resourceStrategies]).then(function(datas){ return datas; }); }, setupController: function(ctrl, model){ ctrl.set("allStrategies", model[0]); ctrl.set("resourceStrategies", model[1]); } });
2.异步计算属性
这种用法我自己研究出来的,觉得很好用,分享给大家。
注意:这种计算属性只能用于模版中,因为模版会自动更新。如果你想在自己写的js中或者这个异步属性,就有限制,不能在请求返回前使用。不过这种情况很少遇到。大多情况下,可以安全使用。如果真的遇到在js中获取的这个属性值与预期不符,那还是在route的model方法中去返回,setupController方法中赋值吧。
app.UserIndexController = Ember.Controller.extend({ users: Ember.computed(function(key, value){ if(arguments.length == 2){ return value; }else{ var ctrl = this; ctrl.store.find("user",{ dept: "某部门" }) .then(function(response){ ctrl.set("users", response ); }); return []; } }) });
相关文章推荐
- Win7风格DWM界面的一些高级应用
- 本文简述了Ajax技术适用场景、Ajax不适用场景的具体情况以及应用时候存在的一些问题。
- TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)
- 一些场景的优化方案和解决方案
- Contoso 大学 - 10 - 高级 EF 应用场景
- 关于一些nginx的高级扩展应用 推荐
- 一些java中的官方API的应用场景
- APS高级计划排程系统应该支持的企业应用场景
- 前端通信:SSE设计方案(二)--- 服务器推送技术的实践以及一些应用场景的demo(包括在线及时聊天系统以及线上缓存更新,代码热修复案例)
- PS中rename-item的一些高级应用
- 有些应用软件进行系统调用时,为了一些场景更好的实现最优的表现,因此需要调整操作系统参数:
- django关于URL、Template、Model的一些高级应用
- Redis高级特性(优化)及应用场景
- wget的一些高级应用
- 数据库分库分表的应用场景及解决方案
- 一些常用设计模式的应用场景
- 《精通CSS高级web标准解决方案》——第一章、第二章(为样式找到应用目标)即选择器
- 高级产品经理教你如何进行用户画像及其应用场景
- Redis高级特性及应用场景