如何使用 Durandal 导航下拉菜单?

2023-11-25

我刚刚开始与 Durandal 合作,所有部分都已就位,并且正在使用热毛巾模板来加快速度。

让我困惑的一件事是如何创建比按钮组更复杂的分层导航系统。这就是我想要的结果:

ABC
A1 B1 C1
A2 B2 C2

A、B 和 C 是顶级菜单,没有附加任何路由 - 它们只是占位符。我将拥有 A1、A2、B1、B2、C1 和 C2 的视图和视图模型,并且需要这些哈希标签作为活动链接。

我现在最好的想法是将父菜单附加到每个路由的 url 中,并在 nav.html 中添加代码,根据解析 url 动态地将每个节点添加到适当的父节点中。为了完全动态,它将动态添加父节点和子节点。

        {
          url: 'A_A1',
          moduleId: 'viewmodels/A_A1',
          name: 'A1',
          visible: true
        }

我已经用 Durandal 搜索了很多分层导航示例,但还没有看到任何内容。是否有最佳实践可以将导航功能扩展到简单的一维列表之外?我是否忽略了路由器中的一些我没有看到的功能,这些功能可以让我在不将层次结构信息嵌入到视图名称中的情况下执行此操作?

编辑:我只是将答案标记为正确,尽管我对所提出的任何解决方案都不满意。当选择一个框架来抽象和分离逻辑、表示和控制时,仅仅为了提供比基本导航外壳更多的内容而再次开始合并这些结构似乎很愚蠢。我已将我的开发工作转移到 AngularJS,这样的事情变得更加直观并且可以保持分离。希望 Durandal 在不久的将来能够取得更大的进步,我一定会在未来的项目中重新评估它。


您可以将它们硬编码到您的 shell 视图中,但如果您不想这样做,您可以这样做 -

在您看来,使用 /# 创建一个不执行任何操作的非工作锚点,其中包含 a 路由下拉列表,另一个包含 b 路由下拉列表。

        <div class="nav-collapse collapse main-nav">
            <div class="btn-group">
                <a class="btn" href="/#">
                    <span class="text">A Routes</span> </a>
                <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
                    <ul class="dropdown-menu pull-right">
                        <!-- ko foreach: aRoutes -->
                        <li data-bind="css: { active: isActive }">
                            <a data-bind="attr: { href: hash }, html: name"></a>
                        </li>
                        <!-- /ko -->
                    </ul>
            </div>
            <div class="btn-group">
                <a class="btn" href="/#">
                    <span class="text">B Routes</span> </a>
                <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
                    <ul class="dropdown-menu pull-right">
                        <!-- ko foreach: bRoutes -->
                        <li data-bind="css: { active: isActive }">
                            <a data-bind="attr: { href: hash }, html: name"></a>
                        </li>
                        <!-- /ko -->
                    </ul>
            </div>
      </div>

为 shell 视图模型中的路线创建一些计算可观察量

    var aRoutes = ko.computed(function () {
        return router.allRoutes().filter(function (r) {
            return r.settings.aroute;
        });
    });

    var bRoutes = ko.computed(function () {
        return router.allRoutes().filter(function (r) {
            return r.settings.broute;
        });
    });

并在您的路线定义中 -

 {
     url: 'a1',
     moduleId: 'viewmodels/a1',
     name: 'A1',
     visible: false,
     settings: {aroute: true}
 },

这会将所有路由设置为 false,然后为它们提供设置为 true 的路由的另一个属性。计算出的过滤器仅显示该设置设置为 true 的路由。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Durandal 导航下拉菜单? 的相关文章

  • 剔除映射 JSON 读取时出错

    我正在 Web 应用程序上使用淘汰赛 该应用程序使用 foreach 显示数据 包括所有需要的库 我收到以下错误 Error Unable to parse bindings Message ReferenceError d is not
  • ko.mapping 创建函数,扩展对象

    是否可以在映射过程中修改对象的模式 由于缺乏更好的术语 我想是的 我似乎无法让它发挥作用 我正在尝试这样的事情 var data itemOne someData itemTwo moreData var mapping newItem c
  • 如何使用淘汰赛映射插件添加新项目

    我正在尝试一个淘汰制图样本 我想我已经快完成了 我似乎无法向 viewModel foos 添加新的 Foo 谁能看到我在这里错过了什么 var Foo function data var self this self id data id
  • 何时使用 ko.utils.unwrapObservable?

    我使用 KnockoutJS 编写了一些自定义绑定 我仍然不确定何时使用ko utils unwrapObservable item 查看代码 该调用基本上检查是否item是一个可观察的 如果是 则返回value 如果不是 则返回value
  • 条件验证不适用于匿名淘汰赛验证规则

    我的视图模型中有以下属性 它们使用淘汰验证 其中之一是自定义验证来检查密码匹配 model Password ko observable extend required message Password is required params
  • KnockoutJS JQuery 组合框绑定

    我想为淘汰赛制作一个绑定 它使用JQuery 自动完成组合框 http jqueryui com demos autocomplete combobox并允许 2 路绑定 http jsfiddle net rniemeyer PPsRC
  • 使用 Chrome 控制台通过 RequireJS 访问 Knockout ViewModel

    既然我正在使用 RequireJS 如何在 Chrome 控制台中访问 KnockOut ViewModel 变量 在使用 RequireJS 之前 我遵循命名空间模式 将所有内容隐藏在单个全局中 我可以通过在 Chrome 控制台中输入以
  • 如果依赖项位于 false 分支语句内,则计算将永远停止触发

    我遇到一个问题 即我的计算可观察量在一系列依赖项更改后停止触发 最后我发现了一点 如果在最近一次评估期间依赖项位于错误分支语句内 则下次将不会触发计算即使在评估完成之前条件变为真 这是一个示例 https jsfiddle net sgs2
  • knockoutjs 中的滑动动作绑定

    我在我的应用程序中使用淘汰赛作为主要框架 它必须支持平板电脑和移动设备 由于框架是基于绑定处理程序构建的 我想知道如何实现对操作 如滑动和其他特定于设备的操作 的自定义绑定 或者也许有类似的事情完成 可能为时已晚 但这里有一个库 将触摸绑定
  • 淘汰赛js和全球化

    我不知道如何使用淘汰赛 js 和非美国语言环境来处理计算 我的逗号是 并且使用 jquery globalization 插件正确验证 但淘汰计算给我一个 NaN knockout js 是否以任何方式支持这一点 或者是否存在任何解决方法
  • DurandalJS 路由行为

    我拥有的 试图了解发生了什么以及如何控制它 我对尚未经过身份验证的用户有一个 公共 视图 对经过身份验证的用户有一个 主页 视图 这是我的路线配置 app start then function Replace viewmodels in
  • 使用 r.js 打包使用“文本”加载视图的 SPA 应用程序

    我正在尝试使用 grunt 将 SPA 应用程序 requirejs durandal 2 knockout 构建到单个 main build js 文件中 并且我遇到了 durandal 用于加载我的 文本 插件的严重问题意见 在开发中
  • 使用knockout js实现html5拖放照片,durandal 2.0

    我在淘汰赛 js 视图模型中有一个照片列表 我希望能够在它们之间交换 实际上更正确的术语是将一张复制到另一张上面 这是我的简化视图模型 define durandal app knockout jquery function app ko
  • 如何让 ko.compated 处理对象内的可观察值

    我有一个相当简单的视图模型来保存数据数组并获取一个我想用来过滤数据的字符串 我有一些非常简单的标记来渲染它 如下所示 section class task list ul li li ul section
  • Edge 中的 Javascript 仅适用于打开的 devtools

    我遇到的问题是 在 MS Edge 中 我的图像映射功能只能部分工作 它由淘汰赛 FW 提供动力 在更大的图像映射上 它不会将整个图像映射注册到视图模型中 因此 图像映射的所有悬停效果和单击样式都会停止工作 然而 这只是大图像地图的问题 还
  • 使用 Knockout 使用多个字段/列和控件来过滤 ViewModel 数据

    我是 KnockoutJS 的新手 但到目前为止我很喜欢它 我想做的是使用表单上的多个字段 列和控件来过滤我的视图模型的数据 但我不知道该怎么做 让我 希望 进一步解释一下 我有一个 viewmodel 可观察的数据数组 其中填充了来自后端
  • 如何在服务器中处理用于发布目的的日期

    我从 ASP NET MVC 获得了这个值 Date 1446393600000 它在 SQL 数据库中的值是 2015 11 02 这是一个date 仅限日期 并将其作为 javascript 对象进行操作 我使用moment js ht
  • 强制使用原生 Knockout 模板

    我有一个需要 jQuery tmpl 的页面 但我想使用本机淘汰模板 data bind foreach Comments 属性 因为我已经包含了 jQuery tmpl 所以淘汰赛的本机模板被禁用 有没有办法可以强制使用本机功能 Than
  • Durandal SPA 与打字稿有关的问题

    我使用 TypeScript 1 8 将我的 durandal SPA 应用程序从 VS 2012 更新到 VS 2015 它将生成 JavaScript ECMA5 我解决了所有构建错误 但我无法修复一个名为 return 语句只能在函数
  • KnockoutJS 中的最大值和数值验证

    如何实现最大值验证并检查可观察值是否为数字 例如 self MyInteger ko observable extend numeric 2 extend maxValue params 255 message MyInteger cann

随机推荐

  • 如何将 WithEvents 关键字与全局变量一起使用?

    我试图在 VB6 模块中声明一个变量 如下所示 Public WithEvents MyObject As MyClass 帮助文件说WithEvents只能在类模块中使用 为什么不能用在 bas模块 我正在工作的遗留代码有一个在模块中全局
  • 在asp.net core中,空字符串是否会转换为NULL?

    假设我有一个form 以及值 当选择form从视图发送到controller to the action method will asp net core将空字符串转换为NULL value 如果我不将布尔属性设置为可为空 required
  • Java 机械化

    我想知道 Java 是否有类似 Perl Python 的机制 Thanks 看一眼HtmlUnit 和Perl的很相似WWW 机械化 它还有一个 Perl 版本 名为WWW HtmlUnit 它用内联 Java将 Java 库方法公开给
  • 比较包含 NaN 的 numpy 数组

    对于我的单元测试 我想检查两个数组是否相同 简化示例 a np array 1 2 np NaN b np array 1 2 np NaN if np all a b print arrays are equal 这不起作用 因为nan
  • 在请求规范中存根身份验证

    在编写请求规范时 如何设置会话和 或存根控制器方法 我正在尝试在集成测试中消除身份验证 rspec requests 这是一个测试示例 require File dirname FILE spec helper require File d
  • XPath :选择所有后续兄弟姐妹,直到另一个兄弟姐妹

    这是我的 xml 的摘录
  • 内部类是轻量级的吗?

    是内部类比普通类更轻量级 还是说最终java编译内部类就像普通类一样 我知道java中的类本身并不都是非常轻量级的 并且它们占用了permgen内存的一部分 所以我想知道是否最好使用类似闭包的函数作为内部类 或者标准类是否也可以 内部类和匿
  • Xampp:网络浏览器不会显示本地主机页面

    我已经在 Windows7 64 位 上安装了 xampp 我想使用 PHP Apache 和 MySql Xampp控制面板上Apache服务器和MySql服务运行正常 但是当我在网络浏览器上运行本地主机时 它只显示连接 没有其他的 与以
  • 使用 Altair 制作仪表板

    我想使用优秀的 Altair 库来创建仪表板 有没有办法创建仪表板而不显示任何代码 我在这里看到一些非常好的例子 https altair viz github io case studies exploring weather html但
  • 如何在android中的两个或多个应用程序之间安全地共享数据?

    我正在为企业环境制作一个应用程序框架 其中涉及两个或多个应用程序之间共享设备内存中的数据 该数据需要存储在设备上并且仅少数应用程序可以访问 可以通过用于安装它们的证书来识别 另外 它需要存储在secure方式 以便其他第三方应用程序无法访问
  • 命名空间与类声明

    我是 C 新手 我似乎找不到任何相关信息 所以我会在这里询问 命名空间中的类是否必须声明 using System public class myprogram void main The console class does not ha
  • 如何在 Unix 中的文件每行末尾添加 100 个空格

    我有一个文件 每行应包含 200 个字符 我收到一个每行只有 100 个字符的源文件 我现在需要为每行添加 100 个额外的空格 如果空格很少 我们可以使用 sed 如下所示 sed s filename gt newfilename 既然
  • java.lang.NullPointerException(无错误消息)

    我知道我的这个问题已经被问过很多次了 我确实遵循了大部分答案 但这些答案都没有帮助我 所以这是我的问题 每当我同步我的项目时它总是失败 Gradle 控制台如下所示 执行任务 app generateDebugSources app gen
  • Python列表的滑动窗口[重复]

    这个问题在这里已经有答案了 有没有一种有效或优雅的方法来检索Python中列表的所有k大小子列表 例如 arr 2 3 5 7 11 13 我想要所有 3 元素子列表 result 2 3 5 3 5 7 5 7 11 7 11 13 我知
  • 每次循环访问 Handlebars.js 范围之外的变量

    我有一个handlebars js 模板 就像这样 externalValue
  • 为什么在 Gmail API 中搜索返回的结果与在 Gmail 网站中搜索的结果不同?

    我正在使用 gmail API 搜索用户的电子邮件 我创建了以下搜索查询 ticket after 2015 11 04 AND from me AND in trash 当我在 Gmail 的浏览器界面中运行此查询时 我收到 11 条消息
  • 无法让factory_girl在rails 3.0.5下运行,意外的tCONSTANT

    这是我的 Gemfile 配置 group development test do gem rspec rails gem factory girl gt 2 0 0 beta1 gem factory girl rails git gt
  • 在字符串末尾使用 JavaScript 的 parseInt

    我知道 parseInt myString 10 Never forget the radix 如果字符串中的第一个字符是数字 将返回一个数字 但是如果我有一个像 column5 这样的字符串并且想要将其增加到下一个 column6 我该如
  • C 中宏参数的类型检查

    是否可以对 define 宏的参数进行类型检查 例如 typedef enum REG16 A REG16 B REG16 C REG16 define read 16 reg16 read register 16u reg16 asser
  • 如何使用 Durandal 导航下拉菜单?

    我刚刚开始与 Durandal 合作 所有部分都已就位 并且正在使用热毛巾模板来加快速度 让我困惑的一件事是如何创建比按钮组更复杂的分层导航系统 这就是我想要的结果 ABCA1 B1 C1A2 B2 C2 A B 和 C 是顶级菜单 没有附