aurelia bindingcontext被父对象重写

aurelia bindingcontext被父对象重写,binding,aurelia,binding-context,Binding,Aurelia,Binding Context,回答如下 我对父组件替换Aurelia bindingcontext有问题 我有第一个组件,它的sourceItem属性在其视图中绑定: ${sourceItem.Name} 这将显示正确的值“父名称” 此组件有一个路由器视图,其中创建了另一个组件。我可以看到创建这个子组件没有问题。问题是这个子组件也有一个sourceItem属性,它以相同的方式绑定在它的视图中 ${sourceItem.Name} 这个应该显示值“Child name”,但是尽管我可以看到第二个sourceItem被正确创

回答如下

我对父组件替换Aurelia bindingcontext有问题

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

${sourceItem.Name}
这将显示正确的值“父名称”

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

${sourceItem.Name}
这个应该显示值“Child name”,但是尽管我可以看到第二个sourceItem被正确创建,但是视图显示了父绑定上下文的值:“parent name”

如果我更改其中一个sourceItem的名称(例如更改为sourceItem1),则一切正常。你知道我是不是搞错了,还是有个虫子挂在什么地方吗

非常感谢

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

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

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


请参阅:

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


我只需要从activate方法返回承诺,这样aurelia就会在启动绑定引擎之前等待承诺返回…

我对此不确定。据我所知,覆盖上下文是与绑定上下文分离的对象。在我的例子中,当我使用Aurelia chrome扩展时,我可以看到我的子组件的绑定上下文(它的值是正确的)和覆盖上下文是空的…也许这对于在VM中访问上下文是正确的,但是,视图可能只能访问两者的组合,文档中所谓的覆盖?也许。。我想从aurelia的人那里得到更多的信息。当我得到更多细节时,我会回来确认/完成你的回答。。。已经谢谢你的帮助了!