Aurelia BindingContext被父母覆盖



在下面回答

我有一个问题,即aurelia bindingcontext被父组件替换。

我有一个具有 sourceitem 属性的第一个组件,该属性在其视图中绑定:

${sourceItem.Name}

这显示了正确的值" parent name" ..

此组件具有创建另一个组件的 router-view 。我可以看到这个孩子的组件是没有问题的。问题在于,该子组件还具有 sourceItem 属性,其视图以相同的方式绑定。

${sourceItem.Name}

应该显示值"儿童名称",但是尽管我可以看到第二个 sourceItem 是正确创建的,但视图显示了父绑定上下文的值:"父母名称"

如果我更改了 sourceItem 之一(例如 sourceItem1 (的名称,则一切正常。知道我是否犯了一些错误,或者是否有一个错误?

非常感谢!

编辑以获取更多信息我注意到,当导航到孩子路线时,问题出现在我身上。但是,当我输入浏览器栏中的完整URL并加载页面时,绑定正常。当我检查BindingContext&OverrideContext(在bind((方法中(,结果完全相同。因此,看起来可能是一个计时问题...

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

我只需要从激活方法中返回承诺,以便Aurelia会等待承诺在启动绑定引擎之前返回...

我猜这是按照文档中所述的预期工作:

aurelia中的"范围"由两个对象组成:bindingContext(几乎总是一个视图模型实例(和可以将其视为BindingContext的"覆盖"的OverrideContext。OverrideContext上的属性"覆盖" bindingContext上的相应属性。实际上,很少有在限制下的"隐藏" bindingcontext上的属性上的属性。...

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

最新更新