绑定到Aurelia的只读DOM属性
Bind to read-only DOM property in Aurelia
我正致力于将PDF.JS与Aurelia集成,并且我目前正在研究滚动绑定行为(当用户滚动文档时加载页面并更新值)。
为了实现这一点,我决定绑定到canvas
元素的offsetTop
属性。我的标记是这样的:
<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>'.
我的问题是-有一种方法绑定到"只读模式"的属性?我想监视属性的更改(这样我就可以根据偏移量定位驱动页面更改),但我不想写入它。这可能吗?
谢谢!
目前我们还没有一个内置的方法来在绑定表达式中表示"我想脏检查这个元素的属性"。但这在我们的待办事项中。
在您描述的特定情况下(scrollTop),我们可以做得比脏检查更好,因为有一个DOM事件与属性相关联。
找到"滚动容器"元素(overflow: scroll
),并使用ref
属性给它一个名称。然后使用trigger
绑定到它的scroll
事件。触发器表达式应该将滚动容器元素的当前scrollTop
分配给视图模型。您可能希望使用throttle
绑定行为来避免在滚动事件中执行大量工作相关的perf/chop问题。
<div ref="myDiv" scroll.trigger="scrollTop = myDiv.scrollTop & throttle">
...
</div>
https://gist.run/?id=db47a4f26f48e17250f2812ad159ea28 相关文章:
- 将input复选框的DOM属性更改反映到innerHTML属性中
- 如何检测 DOM 属性中的更改
- setInterval 警报不会使用 dom 属性进行更新
- 使用简易XDM定期跨域报告DOM属性
- Angularjs 指令更新到 DOM 属性值的变化
- 在 React.js 中渲染 HTML 时没有额外的“data-reactid”DOM 属性
- 何时应该使用 on* DOM 属性与 on* HTML 属性
- 在 TypeScript 中从 DOM 属性转换为枚举
- 必应映射实体集合DOM属性
- 如何检索自定义DOM属性的值
- 使用Web动画制作DOM属性(scrollTop)的动画
- 使用ng-repeat创建DOM属性
- 如何从事件中获取DOM属性.目标,这样我就可以比较它们
- 使用javascript/jquery访问阴影DOM属性(聚合物)
- 使用$compile创建指令,并立即获得DOM属性
- 无法从动态加载的脚本读取DOM属性
- 读取Dom属性
- 绑定到Aurelia的只读DOM属性
- 自定义DOM属性在扩展中不可见
- 引导DOM属性- getElementById或$("“)