Ember.js: ember 2.10未定义的路由动态段不再起作用。

创建于 2016-11-30  ·  22评论  ·  资料来源: emberjs/ember.js

它看起来更像是不受支持的功能,而不是错误,但我想我会记录下来。

从2.9.1升级到2.10时,遇到以下异常。

"Assertion Failed: You attempted to define a `{{link-to "timecards"}}` but did not pass the parameters required for generating its dynamic segments. You must provide param `login` to `generate`."
#app/router.js
this.route('timecards', {path: '/timecards/:login'}, function() {
  this.route('index', { path: '/' });
  this.route('timecard-day', {path: '/day/:date'});
  this.route('pay-period', {path: '/pay-period/:date'});
});

#app/routes/timecards.js #model hook
model(params) {    
  let login = params.login || this.get('currentUser.login');
  return this.store.peekAll('user').findBy('login', login);
}

在父级路由上使用可选的动态段来加载默认用户模型非常方便,而不必为每个子级路由加载它。

Ember 2.10 Inactive Needs Bug Verification Needs Submitter Response

最有用的评论

这对我们来说阻止了2.10和2.11。 如果有人可以确认这是一种回归,很高兴尝试修复。

所有22条评论

我相当确定您仍然可以通过传递未定义并实现自定义序列化挂钩来做到这一点。

此处添加的错误消息对于一般人来说是一个很大的胜利,如果可能的话,我宁愿保留它...

@rwjblue将未定义传递给链接帮助器时,将引发以下警告: This link-to is in an inactive loading state because at least one of its parameters presently has a null/undefined value, or the provided route name is invalid.

我也有以下问题:

{{link-to 'projects.project.tasks' project}}
  this.route('projects', function() {
    this.route('project', { path: ':id' }, function() {
      this.route('tasks');
    });
  });

Ember错误告知未定义的id
快速解决方案是将路由器中的:id更改:project_id

我认为这不是真正的解决方案,应该将其视为错误。 否则,没有有关更改路由器行为的信息。

@Exelord与最初描述的错误无关,而不是错误。 我们专门记录了默认实现需要:modelname_id才能开箱即用。 如果使用自定义字段,则必须在相应的路由中重新实现序列化/反序列化。

@Exelord (作为旁注,与该问题没有直接关系)...我不确定是否已记录此文件,但我认为您不能在路由器中对同一动态段多次使用相同的标识符。 因此,我将避免使用“:id”,也应避免多次使用“:modelname_id”。 (例如,如果再次需要,可以使用“:newmodelname_id”,只是有所不同)

@rwjblue @ sly7-7,因此似乎没有解决此问题的正确方法,对吗?

@arenoir是否可以对此问题进行余烬重现,听起来像个bug。 对该问题进行回购将有助于诊断问题,并提供对该错误的验证。

@锁@pixelhandler
你们有权利,伙计们。 感谢您的帮助和解释。 但实际上它在2.10之前可以正常工作。
我想现在是错误或意外行为。

@pixelhandler好的,是个玩笑

:point_up:看起来很不错。 该标签可以删除

对于将其视为回归还是应该在应用程序中修复,我感到困惑。

这对我们来说阻止了2.10和2.11。 如果有人可以确认这是一种回归,很高兴尝试修复。

对我来说同样的问题,如@arenoir所述

今天遇到同样的问题👎

@jakeleboeuf我遇到了同样的问题,并升级到2.13.1修复了它。 您有哪个版本?

[编辑]
现在是凌晨2点,我的大脑几乎已进入深空。 我只是意识到我测试错了。 它仍在继续...

万一有人遇到这个问题,可能是这样的:

import Controller from 'ember';
import { alias } from 'ember-computed';

export default Controller.extend({
  deployments: alias('model')
});

请注意,我错误地导入了Contoller 。 应该是import Controller from 'ember-controller'; 。 这是如果您正在使用ember-cli-shims,这是我当前的项目正在使用的东西。 在放弃之前,我迷失了大约一个小时,然后回来,清楚地看到我做错了什么。

这里远景,但在通过以下方式意外地用Ember's Object类覆盖本机Object时遇到了这个问题:

const { Object } = Ember;

这导致我的模型挂钩(调用Object.create )失败,并且由于某种原因,引发的异常提到动态段不存在。 我认为这类似于@alvincrespo在上面的评论中提到的内容。

@lrdiv是的,我认为这与我有关。

Assertion Failed: You attempted to define a `{{link-to "control.templates.show"}}` but did not pass the parameters required for generating its dynamic segments. _ember.default.extend is not a function

@brunowego是的,这与我遇到的错误相同。 在我们的案例中,这似乎是一个误导性的异常,而不是实际的错误。

@lrdiv这也发生在我身上,很好! :v:

我正在做的是对Ember进行重构,并用原本的Ember.Object覆盖本地Object Ember.Object 。 因此,我在声明和用法中将名称更改为类似于const EmberObject = Ember.Object ,并且一切都以正确的方式进行。 我也不会将其称为Bug-bug,因此,我在您上面编写的几乎所有内容中都同意您的观点:stuck_out_tongue_winking_eye:

@Exelord @acorncom @alvincrespo @arenoir @asvny @bjornharrtell @brunowego @carlbennettnz @dustinfarris @jakeleboeuf @locks @lrdiv @nightsh @rwjblue @ sly7-7 @tarikozket仍然是一个问题,也许我们应该关闭或创建一个新的副本这个,你怎么看?

现在关闭,如果可以在当前版本的Ember中复制,请随时重新打开。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

kellyselden picture kellyselden  ·  3评论

nathanpalmer picture nathanpalmer  ·  3评论

lukemelia picture lukemelia  ·  3评论

dfreeman picture dfreeman  ·  4评论

artcommacode picture artcommacode  ·  3评论