[英]Aurelia JS - multi level binding/update?
我不确定我是否在这里使用正确的术语 - 但这是一个例子:
这就是Chromium的样子:
基本上,顶部的条目(红色轮廓)是数组的可视化,作为“第一级”数据显示; 这里可以切换每个元素的选择,并进行多元素选择(红色背景)。 作为“第一级”显示源的数组是first-level-items.js
mydata
。
那些在“第一级”中选择的项目然后再次以“第二级”(绿色轮廓)显示; 这里显示了相同的名称和值信息,尽管有点不同。 这里也可以切换元素选择 - 但是只能选择一个“二级”元素。 即“第二级”显示器的源阵列是myseldata
在second-level-items.js
。
这里的意图是,一旦进行了“第二级”选择,就会出现一个滑块,以更改特定对象的.value
属性,该属性是所选数组元素。
我原来的问题(这就是我开始这篇文章/例子的原因)是:
...但是,出于我之外的原因,这实际上在这个gist.run示例中确实有效(但它仍然无法在我的实际项目中工作,这迫使我想出了开始的示例)。 此外,它只在某种程度上起作用,在首先加载示例页面时,在进行第一级和第二级选择之后,然后更改滑块时, .value
将在第一级和第二级显示中更新。 但是一旦我尝试在第二级取消选择 - 或者在第二级更改选择 - 然后更新停止。 所以,我猜这个问题仍然存在......
在进行第二级选择后,在第二级取消选择(通过单击切换)不会删除滑块; 我怎么能让它表现得那样?
更新只发生在滑块的onChange上 - 基本上,当您拖动和滑动时,此组件会发出onSlide
,但只有在释放鼠标时(即滑动停止时)才会生成onChange
。 如何在滑块滑动时更新第一级和第二级显示?
最后 - 这是Aurelia最好解决这类问题的方法吗? 那是 - 我目前在first-level-items.js
有一个数组; first-level-items.js
然后有一个对second-level-items.js
的单例引用,所以它可以调用其中的方法,在第二级更改数组的filter
副本,然后作为源用于二级显示和滑块......有更好的方法来组织它吗?
男孩,这是一个痛苦,但这就是我认为的解决方案:
以下是一些注意事项:
input
元素上应用if.bind
或show.bind
有一些错误 - 相反, input
元素应放在一个封闭的div
,而div
应该应用if/show.bind
if.bind
,因为它重新实例化了滑块元素 - 使用show.bind
这样我们就可以在开始时获得对滑块小部件的引用,即使它已被隐藏 attached()
使用TaskQueue是在开始时获取滑块引用的唯一方法 this.myselChanging
设置为null以指定滑块的目标(只需依靠隐藏滑块) onSlide
),只需使用this.myselChanging.value = e.value;
在处理程序中 - 将更改第一级和第二级值 除此之外,似乎数组是通过引用复制的,因此无需进一步干预即可进行多级更新...
虽然,仍然想知道这样做的正确方法是什么......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.