2014-07-03 29 views
3

我遇到了一个非常奇怪的错误:昨天我编写了一个ember.js应用程序的开始,测试它(一切正常),并将其推送到我的github repo。今天我刚跑grunt serve(就像我昨天所做的那样),但现在我在浏览器控制台中开始输入错误TypeError: newHandlerInfo is undefinedTypeError:newHandlerInfo未在emberjs中定义

我不知道该显示什么,所以你可以检查回购代码。 https://github.com/OpenCubes/OpenCubes

一些调试后,我发现,而不是抛出一个错误,它在烬代码是null返回oldHandlerInfo

// Ideally we should throw this error to provide maximal 
// information to the user that not enough context objects 
// were provided, but this proves too cumbersome in Ember 
// in cases where inner template helpers are evaluated 
// before parent helpers un-render, in which cases this 
// error somewhat prematurely fires. 
//throw new Error("Not enough context objects were provided to complete a transition to " + targetRouteName + ". Specifically, the " + name + " route needs an object that can be serialized into its dynamic URL segments [" + names.join(', ') + "]"); 
return oldHandlerInfo; // = UNDEFINED 

而且应该已经抛出的错误是:

Not enough context objects were provided to complete a transition to view. Specifically, the mod route needs an object that can be serialized into its dynamic URL segments [mod_model.j_id]

回答

1

你的slu((:foo_id)应该匹配模型上的属性名称(或者你必须做所有的序列化,最简单的匹配)。它应该是唯一的,并且可以在不知道其他事物(即主键)的情况下找到该资源。真的,最有意义的是使用你的记录的ID,:id(尤其是因为你使用Ember数据)。现在

OpencubesDashboard.Router.map(-> 
    @resource 'mods', path: '/' 
    @resource 'mod', -> 
    @resource 'mod', path: '/:id', -> 
     @resource 'view', path: '/view' 
     @resource 'edit', path: '/edit' 

    @route('create') 


) 

你的Mod的路线,应该使用slug名

OpencubesDashboard.ModRoute = Ember.Route.extend(
    model: (params) -> 
    @get('store').find('mod', params.id) 
) 

另外您查看和编辑资源,最有可能的编辑/查看的MOD资源定义(也许不是,我的资源我只是猜测)。

OpencubesDashboard.ModViewRoute = Ember.Route.extend(
    model: (params) -> 
    @modelFor('mod') 
    setupController: (controller, model) -> 
    controller.set 'model', model 
    buffer = model.get('attributes').map (attr)-> 
     { key: attr.get('key'), value: attr.get('value') } 
    controller.set 'buffer', buffer 

) 
+0

非常感谢! – Vinz243