应用程序架构与Durandal

SB2*_*055 2 knockout.js single-page-application durandal

我有一个使用DurandalJS构建的应用程序,具有以下内容:

  1. Index.html:默认基页
  2. Shell.js:shell - 包含一个菜单
  3. intro.js:如果用户未经过身份验证,则在shell中呈现viewmodel
  4. home.js:如果用户通过身份验证,则在shell中呈现viewmodel

我的身份验证代码是从shell.js调用的.

我需要我的shell能够监视intro.js和home.js文件中的一些属性.具体来说 - 如果用户选择其中一个视图中带有复选框的项目,我需要使用shell.js来更改菜单项.理想情况下,这可以通过允许shell"观察"视图模型中的内容来完成.这可能吗?

jvr*_*nte 7

我以前遇到过同样的问题.我使用Durandal事件来实现shell和其他视图之间的通信.

您可以在下一个链接中找到有关Durandal事件的信息:http://durandaljs.com/documentation/Events/

我举了一个例子,因为文档不是很清楚.

要在durandal中举办活动,您必须使用app模块:

app.trigger("someEvent");
Run Code Online (Sandbox Code Playgroud)

要抓住这个事件,你必须这样做:

app.on("someEvent", function () {
  //Do that you want
});
Run Code Online (Sandbox Code Playgroud)

此外,这种通信可以实现在本地存储中存储信息或类似的东西,但我认为使用事件更清楚.

如果有人可以为这个问题提供任何其他解决方案,那就太好了.