奥里利亚BindingContext获取由父

问题描述:

重写BELOW奥里利亚BindingContext获取由父

ANSWERED我有个问题与奥里利亚的BindingContext由父组件被替换。

我有具有在其视图结合的sourceItem性的第一组分:

${sourceItem.Name} 

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

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

${sourceItem.Name} 

应该显示值“孩子的名字”,但尽管我可以看到这个第二sourceItem被正确创建的视图显示父的结合方面的价值:“父名”

如果我更改源项目(例如1 sourceItem1)之一的名称,则一切正常。任何想法,如果我犯了一个错误,或者如果有错误挂在某处?

非常感谢!

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

我还张贴了这个问题上github,我得到了我的答案。 在我的情况下,我有一些异步代码从我的子路由视图模型的activate方法中从服务器检索数据。这个问题显然来自事实,即服务器在绑定引擎被触发之前没有返回,所以它将所能找到的信息(父级的绑定上下文)拿走。

我只是不得不从activate方法返回承诺,所以aurelia会在启动绑定引擎之前等待承诺返回...

我想这是工作作为意在文件中指出:

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

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

+0

我对此不确定。据我所知,覆盖上下文是一个独立于绑定上下文的对象。在我的情况下,当我使用Aurelia chrome扩展时,我可以看到我的子组件(它的值是正确的)的绑定上下文以及覆盖上下文是空的。 – Gaet

+0

也许这对于访问上下文中的上下文VM,但是,该视图可能只能访问两者的组合,即文档中所谓的叠加? –

+0

也许..我想从奥里利亚的人那里得到更多的信息。当我获得更多详细信息时,我会回来确认/填写答案...已经感谢您的帮助! – Gaet