我想知道是否有一个通用的解决方案可以将焦点放在组合 View 上的第一个输入/contenteditable 字段上。
我可以通过订阅特定的生命周期事件在我的每个 View 模型中执行此操作,但我无法以更通用的方式执行此操作 - 在一个特定位置仅订阅一次会很棒.
有没有办法做到这一点? 提前致谢。
最佳答案
- 将 View 的 html 包含在根部分或 div 中。
- 将 data-bind="focusFirstEditable: true"添加到此根元素。
- 使用该名称创建一个自定义绑定(bind)处理程序,并将您的逻辑用于查找可编辑的第一个元素,并将焦点设置在您的自定义绑定(bind)处理程序的初始化中。
- 将您的自定义绑定(bind)处理程序添加到 composition.addHandler(yourCustomBindingHandler)。
这将创建一个惰性绑定(bind),该绑定(bind)将在您的撰写完成并且集中后发生。无论您希望哪个 View 发生这种情况,只需将其添加到根元素即可。
关于javascript - DurandalJs : A generic solution to put focus to the first input element on the composed view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18656149/