在Aurelia

时间:2016-08-24 21:37:12

标签: javascript aurelia

我正在努力将PDF.JS与Aurelia集成,我目前正致力于滚动绑定行为(当用户滚动文档时加载页面和更新值)。

为了实现这一点,我决定绑定到offsetTop元素的canvas属性。我的标记看起来像这样:

<canvas repeat.for="page of numPages" offset-top.bind="offsetTop[page + 1]" id="${'pdfCanvas' + (page + 1)}"></canvas>

问题是,当我尝试运行它时,我收到此错误消息:

Uncaught (in promise) TypeError: Cannot assign to read only property 'offsetTop' of object '#<HTMLCanvasElement>'.

我的问题是 - 有没有办法绑定到&#34;只读模式&#34;?我想监视属性的更改(以便我可以根据偏移量定位来驱动页面更改)但我不想写入它。这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

目前我们还没有内置的说法&#34;我想要检查这个元素属性&#34;在绑定表达式中。它虽然在backlog上。

在您所描述的特定情况(scrollTop)中,我们可以做得比脏检查更好,因为有与该属性关联的DOM事件。

找到&#34;滚动容器&#34; element(具有overflow: scroll的那个)并使用ref属性为其命名。然后使用scroll绑定到trigger事件。触发器表达式应将滚动容器元素的当前scrollTop分配给视图模型。您可能希望使用throttle绑定行为来避免执行与滚动事件中执行大量工作相关的问题。

<div ref="myDiv" scroll.trigger="scrollTop = myDiv.scrollTop & throttle">

   ...

</div>

https://gist.run/?id=db47a4f26f48e17250f2812ad159ea28