【问题标题】:Ember-models-table addon throws ember warn error while trying to use 'routeName' propertyEmber-models-table 插件在尝试使用“routeName”属性时抛出 ember 警告错误
【发布时间】:2018-05-12 12:01:25
【问题描述】:

我正在使用 ember-models-table 在我的应用程序中显示表格。该表非常适合排序、分页等,但我试图根据 id 从特定行路由到不同页面。它在其示例中提到使用'routeName' 但是当我使用它时会抛出以下错误:

“断言失败:调用warn 时,您必须提供options 哈希作为第三个参数。options 应包含id 属性。”

我的 .js 编码:

columns:[   
        {
          "propertyName": "firstName",
          "title":"First Name",
          "routeName":"/#/profile/_id"
},

等等

感谢您的帮助。

更新:将 ember 更新到 ember 3.1.2 后错误消失了 但是有一个警告并且它没有按预期正常运行,我哪里出错了?

我的代码:

columns:[   
        {
          "propertyName": "firstName",
          "title":"First Name",
          "routeName":"profile"
}, 

【问题讨论】:

    标签: ember.js ember-addon


    【解决方案1】:

    如果您查看此插件的示例应用程序,您将看到以下路由语法:

    {
        propertyName: 'id',
        routeName: 'users.user'
    },
    

    这大致对应于users/1 之类的路由。所以,如果这是你的路由器:

    Router.map(function() {
      this.route('users', function() {
        this.route('user', { path: '/users/:user_id' });
      });
    });
    

    这里是列:

    columns: [
            {
                "propertyName": "something",
                "routeName": "users.user"
            },
            {
                "propertyName": "id",
                "routeName": "users.user"
            }
        ]
    

    这是模板:

    {{models-table 
    data=model 
    columns=columns
    ...
    }}
    

    routeName 不应包含 id 段。

    将鼠标悬停在创建的锚标记上以查看其指向的位置,然后进行调整,直到它与应去的位置匹配。只有当有有效的链接路由时才会呈现。该路径似乎是相对的,因此如果您已经在 users 路由上,您可能只需要为 routeName 指定 user

    我通过在插件代码库中搜索 routeName 并尝试使用与 {{link-to}} 助手在 Ember 中使用的相同格式来解决这个问题。

    附:这是文档中缺少的一些信息,所以如果这个插件可以帮助您,请考虑进行 PR 以帮助其他人。

    【讨论】:

    • 谢谢,我现在试试。但对我来说问题是完全不同的路线,意味着我们分别维护用户管理路线和 profile/:id 分开。但是让我简短地说一下
    • 我将路径设置为相对路径,就像在用户管理下创建配置文件路由一样,但没有运气。我的 a 标签总是显示带有相同错误的 href ="#"
    • @SowHari 我认为您误解了handbears 的回答。您将预期的 url 路径传递给 routeName,但 ember 路由名称实际上是您要呈现的路由的文件路径,例如如果目标路由的 js 文件在...\myproject\app\routes\profile\user.js 中,那么它将是profile.user(即...\routes\ 和最终.js 之间的部分,以句点作为分隔符。在router.js 中指定的(url)路径是无关紧要。
    • 已确认,_id 不应该出现在 routeName 中,它应该由路由器中的 this.route(...) 内的单词组成。所以也许只是profile?为了举例,我只包括了user
    • @handlebears 嗨,我自己也只尝试了配置文件。可能是我做错了,你能分享你试过的例子吗?非常感谢
    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多