javascript - DurandalJs : A generic solution to put focus to the first input element on the composed view

标签 javascript knockout.js durandal

我想知道是否有一个通用的解决方案可以将焦点放在组合 View 上的第一个输入/contenteditable 字段上。

我可以通过订阅特定的生命周期事件在我的每个 View 模型中执行此操作,但我无法以更通用的方式执行此操作 - 在一个特定位置仅订阅一次会很棒.

有没有办法做到这一点? 提前致谢。

最佳答案

  1. 将 View 的 html 包含在根部分或 div 中。
  2. 将 data-bind="focusFirstEditable: true"添加到此根元素。
  3. 使用该名称创建一个自定义绑定(bind)处理程序,并将您的逻辑用于查找可编辑的第一个元素,并将焦点设置在您的自定义绑定(bind)处理程序的初始化中。
  4. 将您的自定义绑定(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/

相关文章:

javascript - 将按钮添加到可扩展的 div (javaScript)

javascript - 如何在 Angular 中制作自定义指令以使用谷歌地图计算距离

knockout.js 更改 hasfocus 值不会更新绑定(bind)值

javascript - DurandalJS 中启用模式的 app.css 在哪里?

javascript - 迪兰达尔 2.0 "routes"

javascript - 当值为 null 时使用扩展运算符

javascript - Codemirror 自动完成插件事件绑定(bind)

javascript - 无法使用 Knockoutjs 从可观察数组中删除项目

javascript - knockout 中的十进制值舍入问题

javascript - 在 activate 方法中获取事件路由哈希