如何正确构建KnockoutJS应用程序

时间:2012-10-14 17:28:11

标签: javascript knockout.js

我想知道如何以正确的方式构建KnockoutJS应用程序。

  • 官方文档几乎总是只使用一个ViewModel

只有少数实现的函数后,我的代码变得非常混乱,并且来自面向对象的背景,我对这样的架构非常过敏。所以必须有一个更好的解决方案。

对JavaScript不熟悉我正在搜索Stackoverflow并找到those three options。所以我尝试了前两个选项,我对它们不满意:

  • 拥有多个ViewModel ,例如here

我发现很难确定哪个DOM元素获得ViewModel。还有一些从DOM元素外部调用的函数。也许我在这种架构中使用了太少的ViewModel,但ViewModels之间的通信似乎有所不同,我希望不应该以某种方式进行。那么该怎么做呢?

  • 拥有子视图并使用 with binding those three中的第二个选项)。

这是我首选的体系结构类型,因为您可以在一个视图模型中使用文档范围的绑定,但您也可以将代码结构化为子块,并使用with绑定将它们绑定到任何您想要的位置。此选项虽然需要对象文字而不是函数,但这些函数不如此answer中描述的那样。

我没有尝试过方法三,因为它似乎有点矫枉过正,也使用了对象文字。

那么有没有一种方法可以构建我的代码并且在不使用对象文字的情况下完全控制?

我希望这不会太混乱:-P

1 个答案:

答案 0 :(得分:3)

对于您提到的任何选项,您不需要使用对象文字。样本只是用它们来简化代码。您可以选择以您认为合适的任何方式创建单个视图模型。

例如在#3中,您可以使用类似于http://jsfiddle.net/rniemeyer/PctJz/149/的构造函数。当然,实际数据将传递给函数而不是静态。与#2相同,你只需将它包装在“View”对象中。