【问题标题】:EmberJS : "Uncaught Error: More context objects were passed than there are dynamic segments for the route"EmberJS:“未捕获的错误:传递的上下文对象多于路由的动态段”
【发布时间】:2015-05-07 10:10:05
【问题描述】:

我有两条路线,其中一条使用动态段:

App.Router.map(function() {
    this.resource('books');
    this.resource('book', {
        path: "/book/:book_uid"
    })
});

当我在 Books 模板中尝试帮助器 {{link-to 'book' abook.uid}} 时,我收到错误:

未捕获的错误:传递的上下文对象多于路由的动态段数:book

这是 Book 的模型:

App.Book = DS.Model.extend({
    book_id: DS.attr()      
});

这就是我为 Book 定义路线的方式:

 App.BookRoute = Ember.Route.extend({
            model: function(params) {
                return this.store.find('book', params.book_uid);
            },
            serialize: function(model) {
                return {
                    book_uid: model.get('uid')
                };
            } 
});

有没有灰烬圣徒可以看看???

【问题讨论】:

  • 你确定“abook.uid”不是一个对象,错误有点像它吗?您在同一路由定义中使用“”和“”是否有原因。看不到您的代码有任何其他问题=/。
  • 不,不是那样...我切换到旧版本的 emjerJS 并且它工作...不知道为什么//

标签: javascript ember.js routes


【解决方案1】:

link-to 帮助器以内联形式使用时,第一个参数用作链接文本,其余参数用作您的路由路径。

因此,在您的情况下,您必须像这样将三个参数传递给它:

{{link-to 'Show book' 'book' abook.uid}}

或者这样使用块形式:

{{#link-to 'book' abook.uid}}
  Show book
{{/link-to}}

【讨论】:

    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多