2017-02-27 53 views
1

我不知道我是否使用正確的術語在這裏 - 但這裏有一個例子:Aurelia JS - 多級綁定/更新?

這是怎麼看起來像鉻:

gistrun

基本上,頂部的條目(紅色輪廓)是一個數組的可視化作爲「第一級」數據顯示;這裏可以切換每個元素的選擇,並進行多元素選擇(紅色背景)。作爲「第一級」顯示源的陣列是first-level-items.js中的mydata

然後在「第二級」(綠色輪廓)中再次顯示那些在「第一級」中選擇的項目;這裏顯示的是名稱和值的相同信息,雖然有點不同。這裏也可以切換元素選擇 - 但只能選擇一個「第二級」元素。作爲「第二級」顯示源的陣列在second-level-items.js中是myseldata

這裏的意圖是,一旦進行了「第二級」選擇,就會出現一個滑塊,以更改所選數組元素的特定對象的.value屬性。

我原來的問題(這就是爲什麼我在一切開始這篇文章/例),爲:

  • 我如何確保每當滑塊改變時,該值在兩個第二級更新第一級顯示?

...然而,超越我的原因,這其實也有點這個gist.run例如工作(但它仍然無法在我的實際項目,這迫使我拿出例如工作開始)。此外,它只起作用,因爲在首先加載示例頁面,進行第一級和第二級選擇後,然後更改滑塊時,.value將在第一級和第二級顯示中更新。但只要我嘗試取消選擇第二級別 - 或更改第二級別的選擇 - 則更新停止。所以,我想這個問題仍然有效...

  • 第二級選擇完畢後,取消對第二級(通過點擊進行切換)不會刪除該滑塊;我怎麼能這樣做?

  • 的更新只發生在滑塊的onChange - 基本上,當你拖動和幻燈片,此組件發出onSlide,但它只會在最後產生onChange當鼠標被釋放(即,當滑動停止)。如何在滑塊滑動時更新第一級和第二級顯示?

最後 - 這是怎麼解決這種問題最好在Aurelia?那是 - 我目前在first-level-items.js有一個數組; first-level-items.js然後有一個對second-level-items.js的單例引用,所以它可以調用其中的方法,在第二級上更改數組的副本,然後將其作爲二級顯示和滑塊的源...有沒有更好的方法來組織這個?

回答

0

男孩,這是一個痛苦,但這裏是我認爲該如何解決:

這裏有一些注意事項:

  • 顯然,有什麼不對的在滑塊的input元素上應用if.bindshow.bind - 取而代之的是input元素應該被放在一個封閉div,並且div應該有if/show.bind應用
  • 此外,if.bind不宜使用,因爲它重新實例滑動部件 - 使用show.bind所以我們可以得到在開始時的滑塊部件參考目前,即使是隱藏
  • 看似在attached()使用任務隊列是在啓動
  • 去滑參考一旦我們有了一個小部件的引用的唯一辦法,重新申請它的每個第二等級要素上,只要它們發生變化
  • 請勿將this.myselChanging設置爲零cify沒有滑塊的目標(簡單地隱藏適當滑塊計數)
  • 對於連續變化(onSlide),只需在處理程序中使用this.myselChanging.value = e.value; - 兩個第一級和第二級的值將改變

除此之外,似乎陣列由引用複製,所以多層次的更新發生沒有進一步干預...

雖然,仍然愛知道什麼是做到這一點的正確方法...