2012-05-28 36 views
0

工作让我们假设我有简单的HTML标记时提高DOM事件:如何与KnockoutJS

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

当我点击的div我想重点投入。我有什么办法做到这一点?

我在想几种可能性,但不看了好:

  • 忘掉敲除和使用好老的jQuery。但随后代码变成意大利面条,UI行为遍布许多地方。
  • 创建用于输入的自定义绑定处理器,并将点击绑定添加到div,单击更改某些模型属性,自定义绑定对其作出反应并引发焦点事件。但这看起来太复杂了(至少在jq中很容易)。

还有其他的选择吗?

+0

我认为,意大利面条是错误的编程习惯的结果,而不是由于图书馆的选择。如果你不知道自己在做什么,你可以在knockout,jquery或纯JS中编写Spaghetti-Code。另一方面,你也可以用任何一个编写漂亮的可管理代码或Ravioli-Code。它更多的是开发者而不是你选择的图书馆。 – Nope

回答

1

Knockout非常适合用后台数据模型构建UI。当你需要做低级的DOM操作时(如你所描述的),这没有帮助。事实上,在introduction page淘汰赛,作者陈述:

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

(重点煤矿)

我个人认为它的罚款使用jQuery这种类型的操纵。如果您将事件处理程序和MVVM代码分解为单独的JavaScript文件,则可以避免编写意大利式面条代码。

+0

可能是你说得对,我在想可能是做了低级别DOM操作的第三种“淘汰”方式,而我只是没有看到它。似乎没有,我更好地去与jQuery –

+0

@AndrejSlivko:我已经在knockout和jQuery的几个项目上工作,只要你问自己,如果交互是更纯粹的DOM操作或应该由ViewModel驱动, 你会没事的。 –