我想做什么: 创建一条记录而不是保留它,因为所需的一些信息将在下一条路线上填写。
我是怎么做到的? 我正在生成一个uuid,并将其分配给记录。然后转换到新路线。
createOrder() {
var d = new Date().getTime();
var uuid = 'xxxxyyyxxxxxxxxyyxyxxxyyy'.replace(/[xy]/g, function(c){
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c === 'x' ? r : (r & 0x7 | 0x8)).toString(16);
});
console.log(uuid)
this.get('model.event.orders').addObject(this.store.createRecord('order', {id:uuid}));
this.transitionToRoute('orders.list.new', uuid);
问题:
该网址符合预期/orders/<order:id>/new
但是,
在转换模型时,尝试从404中返回的服务器获取数据,而不是使用存在记录的本地存储或内存。
我想要的是什么?: 如何使其使用本地存储,以免导致错误。
答案 0 :(得分:1)
正如勒克斯在评论中写道,通过该模型将解决您的问题。原因很简单:如果在transitionToRoute函数中给出模型作为参数,Ember将使用该模型而不是从后端获取模型(通过调用model hook
)。
来自文档:
可选择为相关路线提供模型。该模型将使用路径的序列化挂钩序列化到URL中。
如果传递了文字(例如数字或字符串),则会将其视为标识符。在这种情况下,将触发路由的
model hook
答案 1 :(得分:0)
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.get('store').peekRecord('order', params.id);
}
});
这也是确保不会触发ajax请求的一种方式。 它将直接向ember商店提出请求。