Ember.js: [2.15.0] {{link-to}}局部停止工作

创建于 2017-09-01  ·  25评论  ·  资料来源: emberjs/ember.js

升级到2.15.0之后,我们的某些测试开始失败,因为部分内部的{{#link-to}}停止了工作。

这是有问题的{{link-to}} 。 渲染时没有立即错误,但是生成的href只是#并且在测试时不会输出data-test-user-id属性。 单击链接将输出以下警告:

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.

部分中的其他所有内容仍然可以正常显示,只是链接失败。

将部分零件更改为组件可以解决此问题。

Bug Ember 2.15

最有用的评论

2.15中复制。 同样的旋转在2.14中工作。

所有25条评论

我在2.15中遇到过类似的问题,似乎在组件的屈服块内渲染的部分对象未从该组件接收屈服参数。

例:

// -name.hbs
<p>{{name}}</p>

component.js

export default Component.extend({
  name: "Ivan"
})

template.hbs

{{yield name}}

some-route-template.hbs

{{#my-component as |name|}}
  {{partial "name"}}
{{/my-component}}

在这种情况下,未定义部分中的{{name}}变量。

#each迭代也会发生相同的情况。 #each中的值不会传递到局部的上下文。

{{#each visibleContent as |record index|}}
  {{partial rowTemplate}}
{{/each}}

记录和索引在局部中均未定义。

2.15中复制。 同样的旋转在2.14中工作。

有趣的是,我仍然可以通过名称来引用“丢失的”变量的属性,例如,在rowTemplate我可以执行record.id但不能执行(get record "id") 。 不知道这对调试问题是否有帮助。

这种行为是遗留的,还是应该考虑使用替代方法? 我们一直在尝试在部分组件上使用组件,但是对于我们的大型应用程序,仍然有很多实例会破坏该程序。 在这一点上,我们被禁止升级,而令我惊讶的是这并没有影响到更多的人。

不,这本身不是遗留行为,但这是相当不常见的。 您应该尽可能地迁移到使用组件(推理起来非常简单),但是我们绝对应该尽快解决。

@rwjblue我应该从哪里寻找有助于解决此问题的任何指针?

我提交了https://github.com/emberjs/ember.js/issues/15674以及一些失败的测试案例。 似乎问题不像访问部分对象中的绑定属性值那么简单(至少在我的测试中似乎不是这样)。 我认为基本问题与生成诸如ifunlesswithget类的东西使用的引用的方式有关。

可悲的是,我没有烟枪指向。 :(

由于该错误,我们也无法升级。 与@ thec0keman相似,我们有一个相当大的ember应用程序,该应用程序最初是使用EAK开始的,因此仍有一些挥之不去的遗留功能,我们尚未带入现代余烬中

我们没有很多零件,但是足以让我们成为阻碍者,直到我们有时间将剩余的零件迁移/测试到组件

这确实应该获得更高的优先级,自2.15以来,部分内容已被破坏,并阻止人们从2.14升级到2.16。

+1

在EmberFest之后的下周,我将看一看。

我已经延长了@Serabe和发现,如果用相同名称的属性在控制器中被定义,谐音得到正确的值。 但是,如果数组中的值是undefined则partial仍然认为它具有真实值。

这是微光的错误。 请参阅参考问题。

发布了带有修复程序的新的微光版本。 更新微光版本后,应修复该错误。 我已经打开了一个请求来更新微光版本。

仅供参考-升级到Glimmer 0.29是一项巨大的工作(不太可能在Ember 3.0.0之前发生), @ chadhietala将修补程序

@rwjblue LMK如果有什么我可以帮助您解决的问题,其中包括修补的0.25分支(因为我目前正在升级对讲机)。 据我所知,还没有到达余烬金丝雀

如果与with辅助程序

{{#with someProperty as |youNameIt|}}
  {{partial somePartial}}
{{/with}}

补丁可能也可以解决此问题,但是请确保我在这里提到了它!

你好是否有针对此问题的修复程序? 据我所知,大多数助手在partial使用时会受到一定影响。 有解决方法吗?

Ember 2.16.1已发布,应解决部分问题。 如果您仍然遇到问题,请告诉我

解决了这些问题后,仅供参考,我发现了另一个带有局部变量的问题:

https://github.com/emberjs/ember.js/pull/15797

我今天晚些时候会解决这个问题

你们完全确定它已针对2.15解决吗? @Serabe (https://github.com/emberjs/ember.js/issues/15621#issuecomment-326823615)的旋转仍然在2.15.3上失败,但在2.16.1上有效。

顺便说一句,我注意到,如果您修改了partial以写入name ,它实际上会打印正确的值...

image

它不是。 Ember 2.15不是LTS,所以我认为不会有修复程序。

确认。

哦好的。 我认为将修复程序反向移植到微光0.25意味着这也适用于Ember 2.15。 猜猜我们接下来将直接跳至2.16。 谢谢!!

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