Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确构造KnockoutJS应用程序_Javascript_Knockout.js - Fatal编程技术网

Javascript 如何正确构造KnockoutJS应用程序

Javascript 如何正确构造KnockoutJS应用程序,javascript,knockout.js,Javascript,Knockout.js,我想知道如何以正确的方式构造KnockoutJS应用程序 官方文档几乎总是只使用一个视图模型 在只实现了几个函数之后,我的代码变得非常混乱,并且来自面向对象的背景,我对这样的架构非常敏感。因此,必须有更好的解决办法 由于对JavaScript不是很有经验,我在搜索Stackoverflow时发现。因此,我尝试了前两种选择,但我对它们不满意: 具有多个视图模型的 我发现很难决定什么DOM元素得到什么ViewModel。此外,还有几个从DOM元素外部调用的函数。也许我在这种架构中使用的Vie

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

  • 官方文档几乎总是只使用一个视图模型
在只实现了几个函数之后,我的代码变得非常混乱,并且来自面向对象的背景,我对这样的架构非常敏感。因此,必须有更好的解决办法

由于对JavaScript不是很有经验,我在搜索Stackoverflow时发现。因此,我尝试了前两种选择,但我对它们不满意:

  • 具有多个视图模型的
我发现很难决定什么DOM元素得到什么ViewModel。此外,还有几个从DOM元素外部调用的函数。也许我在这种架构中使用的ViewModels太少了,但是ViewModels之间的通信似乎有所不同,我希望不需要这样做。那么如何正确地做到这一点呢

  • 具有子视图,并使用带有绑定的(中的第二个选项)
这是我首选的体系结构类型,因为您可以从一个视图模型中获得文档范围的绑定,但也可以将代码组织成子块,并通过使用with绑定将它们绑定到任何您想要的位置。但是,此选项需要对象文字而不是函数,如本文所述,这些函数的性能较差

我没有尝试过方法3,因为它似乎有点过分,而且还使用对象文字

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


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

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


例如,在#3中,可以使用如下构造函数:。当然,实际数据将被传递到函数中,而不是静态的。与#2相同,您只需要将其包装在“视图”对象中。

+1通过同一示例显示对象文字和函数方式,更容易看出它们的不同之处[并意识到它们没有太大的不同:)]很好的示例,谢谢!我需要更新小提琴才能看到它运行-也许击倒已经过时了?非常有帮助,谢谢。。如何设置加载时的默认视图?