升级到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.
部分中的其他所有内容仍然可以正常显示,只是链接失败。
将部分零件更改为组件可以解决此问题。
我在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}}
记录和索引在局部中均未定义。
有趣的是,我仍然可以通过名称来引用“丢失的”变量的属性,例如,在rowTemplate
我可以执行record.id
但不能执行(get record "id")
。 不知道这对调试问题是否有帮助。
这种行为是遗留的,还是应该考虑使用替代方法? 我们一直在尝试在部分组件上使用组件,但是对于我们的大型应用程序,仍然有很多实例会破坏该程序。 在这一点上,我们被禁止升级,而令我惊讶的是这并没有影响到更多的人。
不,这本身不是遗留行为,但这是相当不常见的。 您应该尽可能地迁移到使用组件(推理起来非常简单),但是我们绝对应该尽快解决。
@rwjblue我应该从哪里寻找有助于解决此问题的任何指针?
我提交了https://github.com/emberjs/ember.js/issues/15674以及一些失败的测试案例。 似乎问题不像访问部分对象中的绑定属性值那么简单(至少在我的测试中似乎不是这样)。 我认为基本问题与生成诸如if
, unless
, with
和get
类的东西使用的引用的方式有关。
可悲的是,我没有烟枪指向。 :(
由于该错误,我们也无法升级。 与@ 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已发布,应解决部分问题。 如果您仍然遇到问题,请告诉我
你们完全确定它已针对2.15解决吗? @Serabe (https://github.com/emberjs/ember.js/issues/15621#issuecomment-326823615)的旋转仍然在2.15.3上失败,但在2.16.1上有效。
顺便说一句,我注意到,如果您修改了partial以写入name
,它实际上会打印正确的值...
它不是。 Ember 2.15不是LTS,所以我认为不会有修复程序。
确认。
哦好的。 我认为将修复程序反向移植到微光0.25意味着这也适用于Ember 2.15。 猜猜我们接下来将直接跳至2.16。 谢谢!!
最有用的评论
在2.15中复制。 同样的旋转在2.14中工作。