0

下面回答

我有一个 Aurelia bindingcontext 被父组件替换的问题。

我有一个第一个组件,它有一个绑定在其视图中的sourceItem属性:

${sourceItem.Name}

这显示了正确的值“父名”..

该组件有一个路由器视图,其中创建了另一个组件。我可以看到这个子组件的创建没有问题。问题是这个子组件还有一个sourceItem属性,它以同样的方式绑定在它的视图中。

${sourceItem.Name}

应该显示值“子名称”,但尽管我可以看到第二个sourceItem被正确创建,但视图显示父绑定上下文的值:“父名称”

如果我更改其中一个sourceItem的名称(例如更改为sourceItem1),一切正常。知道我是否犯了一些错误或者某处是否挂着错误?

非常感谢!

编辑更多信息 我注意到,当导航到子路线时,我遇到了问题。但是当我在浏览器栏中输入完整的 URL 并加载页面时,绑定工作正常。当我检查 bindingContext 和 overrideContext (在 bind() 方法中)时,结果完全相同。所以看起来这可能是一个时间问题......

4

2 回答 2

1

我也在 github上发布了这个问题,我得到了答案。就我而言,我有一些异步代码在我的子路由视图模型的激活方法中从服务器检索数据。问题显然来自这样一个事实,即服务器在绑定引擎被触发之前没有返回,因此它获取了它可以找到的信息(父级的绑定上下文)。

我只需要从 activate 方法返回承诺,因此 aurelia 会在启动绑定引擎之前等待承诺返回......

于 2017-06-28T08:51:56.557 回答
0

我想这正如文档中所述的那样工作:

aurelia 中的“范围”由两个对象组成:bindingContext(几乎总是一个视图模型实例)和 overrideContext,它可以被认为是 bindingContext 的“覆盖”。overrideContext 上的属性“覆盖”bindingContext 上的相应属性。实际上很少有 overrideContext 上的属性“隐藏”下面的 bindingContext 上的属性。...

见:http ://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-how-it-works/3

于 2017-06-27T09:52:53.260 回答