2012-09-10 34 views
2

我一直在试图找到一些关于如何在使用MVVM进行Web开发时处理应用程序范围元素的好资源。我正在使用knockoutjs。处理MVVM视图模型中的应用程序范围元素

在应用范围内,我的意思是像网站的导航元素。也许每个页面都有登录框,搜索框,页脚等。

这些应该进入单独的视图模型吗?还是应该从包含这些基础视图模型的每个页面的视图模型派生?还是应该将这些属性全部排除在视图模型之外?

在此先感谢。

回答

1

考虑像处理业务组件一样处理所有支持组件(菜单,页脚等)。另外,我建议为每个UI组件分别提供不同的视图模型,而不考虑UI组件的类型。这使得你的组件高度松散耦合。

例如,菜单可能有自己的视图模型(不属于任何全局视图模型的一部分)。现在,您可以使用PubSub库来实现发布者/订阅通知,以在不同的UI组件(视图模型)之间进行松散耦合的通信,您的业务组件可根据事件请求显示/隐藏自己。

但是,为了实现菜单组件,我建议使用可响应URL更改(URL的hashtag部分)的路由器库。然后,当用户在主菜单(简单定位标签)上导航时,您可以简单地更改URL,并且您的组件将由路由器库激活/取消激活。这会让你收藏并使用浏览器历史记录按钮。

看看http://boilerplatejs.org这是一个用于大规模JavaScript开发的参考架构。它具有以上所有实现的示例应用程序。它使用UrlController来根据URL更改激活/停用组件,其中DomController用于将组件静态放置在DOM本身(例如菜单,页脚,标题)。它对大多数示例UI组件使用knockoutjs。

声明:我是BoilerplateJS的创始人

相关问题