问题标签 [durandal-2.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1093 浏览

dom - Durandal:从 DOM 中手动删除视图

我正在使用使用 Durandal 2.0 的 HotTowel SPA 创建单页应用程序

我有两个视图,名为仪表板和设置。

当我加载网站时,仪表板视图被加载。当我单击设置时,仪表板视图会被停用,当我单击仪表板时,它会再次被激活。

我的设置视图上有一个方法。调用此方法时,我希望从 DOM 中删除仪表板视图。这样当我再次单击仪表板时,它必须重新加载视图(就像重新加载网页时一样),而不是仅仅激活它。

那么有没有办法手动分离视图?

0 投票
1 回答
3852 浏览

durandal - durandal router.navigate 不工作

我需要从我的代码中的事件处理程序导航到另一个视图,我这样做

);

在这里,我定义了我的 moudle 和路由器 - 目的地之间的映射,并将根视图设置为另一个视图 locationPicker

在我的另一个视图 locationPicker.js 中,我像这样导航到它

从开发人员工具中,我看到我的视图模型destination.js 文件加载没有错误,但视图根本没有改变。为什么会这样?顺便说一句,我使用的是 durandal 2.0.1 版本

0 投票
1 回答
163 浏览

durandal - 如何在 durandal 示例应用程序中定义标准子路由

当我在网址栏中输入时:

左边有 hello world 路线。当我点击它时,网址栏变为:http://localhost:28905/#knockout-samples/helloWorld

1.)我如何才能http://localhost:28905/#knockout-samples/立即使用子路线加载路线,所以当我加载淘汰赛样本时,我会看到

来自 durandaljs 样本:

0 投票
1 回答
1053 浏览

mvvm - durandal:一个视图模型的多个视图

我正在使用 durandal 2 和breathjs。

我的数据库中有一些表,我们称它们为 table1 和 table2。

在项目中,我为 table1 创建了一个 CRUD:viewmodels/table1crud.js+ views/table1crud.htmlviewmodel 和视图,它将使用微风连接到数据库,从 table1 获取数据,列出数据,并提供更新/删除/添加操作。

对于 table2,我可以做同样的事情,创建另一个 crud(视图/视图模型),但它可能并不优雅,特别是如果我有 2 个以上的表。

所以我的想法是entitycrud使用构造函数创建一个视图模型:

加上多个视图views/table1.htmlviews/table2.html.

所以这是我的问题:有没有办法在构造函数中entitycrud使用table1table2使用 entityType ?

就像是 :

这个 html 代码当然不会工作,我该怎么做类似的事情?

谢谢你。

0 投票
1 回答
136 浏览

durandal - Durandal 路线中的星号 (*)

Durandal 路线中星号的用途是什么?这是Docs中的一个示例:

编辑:使用 Durandal 2.0

0 投票
0 回答
538 浏览

mvvm - durandal 2.0 自定义对话框主-详细信息

升级到 durandal 2.0 后,我发现我需要将我的主列表页面转换为使用 showDialog 功能而不是 showModal。

以前我的主模型是这样的:

然后在我的产品详细信息视图页面中,我可以像这样轻松关闭模式

p>

现在在 Durandal 2.0 中,要正确处理要困难得多。

母版页中的代码现在是

但是访问close函数的方式很烦人:

首先,我必须在产品详细视图模型中加入“插件/对话框”;我不希望这样做,因为我认为细节视图模型不需要知道它是一个对话框,只有主列表视图模型需要知道这一点。

然后在我分配的产品详细视图模型的 compositionComplete 事件中:

(prodedit 是作为产品详细信息 vm 返回的)

这样,可以使用以下命令关闭产品详细信息对话框:

好的,现在这是我的问题:

这将弹出对话框一次或两次,但从那时起失败而没有错误。我唯一能看到的是 dialogActivator.activateItem 达到了它的失败线: dfd.resolve(false);

有趣的是,如果我在断点处暂停足够长的时间,问题就不会发生。但是一旦发生一次,它就再也无法打开对话框了。

有一个更好的方法吗?

谢谢你。

0 投票
1 回答
1358 浏览

twitter-bootstrap - 为什么在使用 Durandal/Knockout 时,Bootstrap datetimepicker 会多次插入 DOM?

我有一个基于 Durandal JS 2.0 构建的应用程序,并使用了 John Papa 的 CodeCamper SPA 中的灵感部分。在其中一种形式中,我想要一个日期和时间选择器,所以我发现http://www.malot.fr/bootstrap-datetimepicker看起来不错并且满足我的需求。它使用带有自定义绑定处理程序的 Knockout JS 连接到数据层,并且也这样初始化。

请注意,控件在视觉上和数据工作得很好,而且看起来也不错。它更新数据模型和底层数据库就好了。除此 datetimepicker 外,所有其他标准控件都可以正常工作。

我的问题发生在组成 durandal 表单时,将 datetimepicker 插入到 DOM double 中。每次我打开表单时,选择器都会再次插入,加倍。过了一会儿,整个应用程序开始变慢,因为我在 DOM 中插入了大量的日期时间选择器。

我试图追踪发生这种情况的位置,并且每次初始化或重新初始化可观察对象时似乎都会发生这种情况。这发生在激活表单和检索数据时。这会触发 bindinghandler 运行并插入选择器的另一个实例。

我已经尝试了不同的方法来防止选择器被创建,但似乎没有任何效果。我试图对选取器进行 HTML 初始化,但是绑定处理程序在找到控件时遇到了问题。

因此,我一直认为问题在于我初始化底层可观察到的淘汰赛的方式,或者无法使用淘汰赛绑定处理程序初始化选择器。

对此的任何想法都将受到欢迎。

这是我的应用程序中的一些选定代码:

淘汰赛绑定处理程序:

部分取自映射从 Amplify JS 检索并映射到数据模型的数据的数据层:

0 投票
2 回答
652 浏览

javascript - Durandal 2.0“路线”

我是一名初学者,正在尝试学习 SPA / Durandal、Knockout 等...

在我的路线上需要一些帮助以获取管理员下拉按钮。

到目前为止,这是我在shell.js中的路线:

我还在shell.js中创建了adminRoutes以使用 KO 绑定到视图:

根据研究,他们说router.routes是一个数组,但是当我将它绑定到我的视图时,按钮显示 0 个下拉项目。

当我这样做时(如下),我可以获得所有路线,但我只需要管理路线......

我应该如何进行?似乎router.routes实际上不是一个数组?如果我尝试将其打印到控制台:

是的,不知道...帮助将不胜感激!

更新: ------------------------------------------------ ------------------

即使在 RainerAtSpirit 的建议之后,当我过滤代码时,我仍然会得到一个空数组。

但是,当我在“ chrome 控制台”中运行它时:

我确实得到了数组,所以我不知道为什么在代码中它不起作用。

0 投票
1 回答
520 浏览

routing - 子路由器 durandal 2 HTML StarterKit

我试图在 durandal 2 starterkit 中创建子路由,如http://durandaljs.com/documentation/Using-The-Router/中所示, 但没有成功。

我想要像http://mywebsite.com/#blog/post1/这样的东西

所以在我的应用程序中,我在 viewmodel 中有一个 shell 文件 viewmodel/shell.js

在应用程序/博客/

我有

为什么它不起作用我做错了什么?

谢谢

编辑:

这就是我的 shell.js 的样子

0 投票
1 回答
601 浏览

knockout.js - 可通过 Durandal compose 进行淘汰排序

我正在尝试创建一个视图,其中包含一组动态小部件(不是实际的 durandal 小部件)。每个小部件只是一个标准模块,具有自己的行为和渲染,用户应该能够拖动和重新组织它们以及添加或删除它们。

当前文件结构如下:

  • 视图模型
    • 主页.js
    • 小部件A.js
    • 小部件B.js
  • 意见
    • 主页.html
    • 小部件A.html
    • 小部件B.html

主页 viewModel 包含一个observableArray名为 widgets,其中包含小部件的 viewmodel 的名称作为字符串:


问题 1:

如果我在 foreach 中使用 compose 绑定,一切都会按预期工作,例如:

但是,如果我从 更改foreachsortable$data 似乎不再引用小部件,并且当前主容器视图被无限次渲染。

更新: 为了查看 $data 是否确实发生了变化,我执行了以下操作:

实际上,当使用 foreach 时,结果是小部件的 viewModel 名称,但是当使用 sortable 时,它​​包含家庭的实际 viewModel。

问题2:

我需要将 someContext viewModel 属性发送到小部件,因为它需要该信息进行初始化。我曾尝试使用activationData,但错误消息指出该对象未定义:

我希望通过以这种方式利用组合来避免必须专门声明对每个小部件类型的依赖关系并在主视图模型中实例化它们,但是尝试这条路线可能会出错。

我的方法基于在此线程上找到的评论: https ://groups.google.com/forum/#!topic/durandaljs/it3q3QePI2M

我对淘汰赛 + durandal 很陌生,因此非常感谢所有输入。