使用KnockoutJS时如何引发DOM事件

时间:2012-05-28 16:10:18

标签: knockout.js dom-events

让我们假设我有简单的html标记:

<div>
    <input type="text"/>
</div>

当我点击div时我想集中输入。我有什么方法可以做到这一点?

我在考虑几种可能性,但看起来并不好:

  • 忘记淘汰并使用好的旧jQuery。但随后代码转变为意大利面,UI行为遍布许多地方。
  • 为输入创建自定义bindingHandler并添加单击绑定到div,单击更改某些模型属性,自定义绑定对其作出反应并引发焦点事件。但这对于这么简单的事情来说看起来太复杂了(至少在jq很容易)。

还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

Knockout非常适合构建具有支持数据模型的UI。当你需要进行低级DOM操作时(例如你所描述的),这没有用。事实上,在introduction page淘汰赛中,作者说:

  

每个人都喜欢jQuery!它是笨重的替代品,   我们过去不得不忍受的不一致的DOM API。 jQuery是一个   优秀的低级操作元素和事件处理程序的方法   网页。 我当然仍然使用jQuery进行低级DOM操作。   KO解决了另一个问题。

(强调我的)

就我个人而言,我认为将jQuery用于此类操作是件好事。如果将事件处理程序和MVVM代码分解为单独的JavaScript文件,则可以避免编写意大利面条代码。