2017-09-03 32 views
1

我所试图做的事: 创建一个记录,而不是坚持它,因为所需的一些信息将在未来之路上充满。什么是使用不正确的方法坚持对动态路由记录灰烬

我该怎么做? 我正在生成一个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); 

问题: 该URL如预期/orders/<order:id>/new但是, 一旦转变模型尝试,而不是使用本地存储装置或存储器,其中该记录来获取从它返回一个404的服务器中的数据,存在。

我想要什么?: 我怎样才能使其使用本地存储,使其不会在一个错误的结果。

+0

你应该通过模型,而不是id到'transitionToRoute' – Lux

+0

谢谢@Lux它的工作! –

回答

1

正如勒克斯在评论中写道,传递模型将解决您的问题。原因很简单:如果在transitionToRoute函数中给出模型作为参数,Ember将使用该模型而不是从后端获取模型(通过调用model hook)。

从文档:

选择提供的模型有问题的途径。该模型将使用路由的序列化钩子序列化到URL中。

如果传递一个文字(如数字或字符串),它将被视为一个标识符。在这种情况下,路由的model hook将触发

0
import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model(params) { 
    return this.get('store').peekRecord('order', params.id); 
    } 
}); 

这也是确保Ajax请求不会触发的余烬方式。 它会直接向呃店发出请求。