2017-06-27 177 views
0

重寫BELOW奧裏利亞BindingContext獲取由父

ANSWERED我有個問題與奧裏利亞的BindingContext由父組件被替換。

我有具有在其視圖結合的sourceItem性的第一組分:

${sourceItem.Name} 

這顯示正確的值「父名」 ..

該組件具有其中創建另一個組件的路由器視圖。我可以看到這個子組件創建時沒有問題。問題是這個子組件還有一個sourceItem屬性,該屬性在其視圖中以相同的方式綁定。

${sourceItem.Name} 

應該顯示值「孩子的名字」,但儘管我可以看到這個第二sourceItem被正確創建的視圖顯示父的結合方面的價值:「父名」

如果我更改源項目(例如1 sourceItem1)之一的名稱,則一切正常。任何想法,如果我犯了一個錯誤,或者如果有錯誤掛在某處?

非常感謝!

編輯更多信息 我注意到,當導航到子路線時,問題出現在我身上。但是,當我在瀏覽器欄中輸入完整的URL並加載頁面時,綁定可以正常工作。當我檢查bindingContext中的overrideContext(在bind()方法中)時,結果完全相同。所以它看起來像它可能是一個時間問題......

回答

1

我還張貼了這個問題上github,我得到了我的答案。 在我的情況下,我有一些異步代碼從我的子路由視圖模型的activate方法中從服務器檢索數據。這個問題顯然來自事實,即服務器在綁定引擎被觸發之前沒有返回,所以它將所能找到的信息(父級的綁定上下文)拿走。

我只是不得不從activate方法返回承諾,所以aurelia會在啓動綁定引擎之前等待承諾返回...

0

我想這是工作作爲意在文件中指出:

的「範圍」,在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