问题标签 [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 回答
446 浏览

durandal - durandal 事件无法正常工作

我正在使用 durandal 在视图模型之间传递消息。所以我使用下面的代码发送消息

然后我使用下面的代码来检索消息

但是当我在这一行的 app.on 中放置断点时,它并没有就此testObsArray(data); 停止。调试器在线停止app.on('FireEvent').then(function (data)

我没有得到数据。为什么会这样?当我将数据传递给时dataObsArray,有 10 条记录。

我不知道为什么我没有得到任何数据。我哪里错了?如果我无法正确解释这一点,我对 Durandal 真的很陌生,非常抱歉,如果您需要更多说明,请告诉我。

0 投票
0 回答
299 浏览

knockout.js - 如何从 kendoui 数据源中当前的项目中获取 knockoutjs 计算的 observableArray

我正在尝试将 kendoui DataSource 与我的淘汰视图模型一起使用。很高兴我可以配置一个 kendoui 数据源并将其分配给一个 kendoui 网格的数据源。

但是当前在 kendoui 网格中显示的数据(经过过滤、排序和分页后)对于我的淘汰视图模型的其余部分也很重要。例如,当前显示的网格中有一些项目被标记为选中,并且它驱动同一页面上的一些其他 UI。或者当前页面的项目也有代表性的图片显示在 UI 的不同部分。作为一般规则,我使用淘汰赛作为我的视图模型,并且只有在我不得不为 kendoui 网格之类的东西时才偏离它。

如何保持 kendoui 网格中加载的淘汰 observableArray 项目与网格同步,包括在数组中具有与网格中项目的数据属性相对应的可观察项目。即,有人检查了网格中的一个项目,并且 observableArray 中相应项目中的相应属性发生了变化。

我想问题是如何使 kendoui 的内置 observables 与 shadow knockout observable 和 observableArray 保持同步。

我特别想在我的 durandaljs 视图模型中使用这种方法。

谢谢

0 投票
1 回答
393 浏览

asp.net - mvc webApi,为什么应用程序重新启动?

我在基于 mvs web api 的 durandal 项目中工作。

然而,有时它在运行时再次到达函数 Application_Start(在 Global.asax 中)。

为什么?!它必须发生一次,当第一个请求到达服务器时!

例如,在 Application_Start 中,我初始化了一些单音实例类,它们又被初始化了!这对我的申请不利!

0 投票
1 回答
122 浏览

durandal - Is it possible to use appropriate file names for widgets in Durandal

Using Durandal widgets, you have to create a folder for each widget, and then 2 files in each folder. For example a mywidget folder containing view.html, model.js files.

This naming style makes it difficult to find files in the solution. Is there any way to name these file names like mywidget.html, mywidget.js?

0 投票
1 回答
105 浏览

asp.net-mvc - 是否有强制durandal在启用缓存时重新创建视图/控件(调用视图附加事件)

我在视图上使用剑道 UI 网格,它是使用 mvvm 淘汰赛的 durandal 2.0 应用程序的一部分。在特定视图上,需要显示具有动态列数的剑道网格,因此每次访问视图时,网格列的计数可能与上次访问的计数不同。现在由于启用了缓存(也适用于此视图),因此对于后续访问,网格行正在更改以反映数据更改,但网格标题(包括列数)保持在第一次访问视图时的状态。

注意:如果我禁用了用于组合此视图的 compose 缓存,则网格每次都可以很好地加载不同数量的列,但不能仅仅因为一个控件没有很好地加载以及由于业务需求而禁用缓存。

所以我想知道有什么方法可以告诉 durandal 在每次访问特定视图时运行 viewattached 事件,如果不可能,那么我是否可以要求 Durandal 在每次访问时重新创建剑道网格控制(所以它不会' t 使用它创建的内容并保存在视图缓存中)...我也尝试过总是在 comose 上运行 viewattached,但是在访问视图时会带来闪烁,因此我觉得有点禁用了 compose 的缓存(但我不能那样做这种组合不仅仅用于视图,而且都应该使用缓存)

0 投票
1 回答
229 浏览

knockout.js - Durandal 应用程序中的单独登录视图

我的 Durandal 应用程序的DOM结构如下:

这是我的路由器配置的片段

如您所见,我的登录视图被插入到<div data-bind="router:{}"></div>预期的行为中。但是,如果我在登录视图中,我需要隐藏标题视图,我通过订阅标题视图模型中的路由器配置来设法做到这一点:

但这感觉有点乱,标题视图的DOM仍在页面中,我真正想做的是,如果我在登录视图中,我只想让登录视图的DOM在那里,就好像我我在单独的页面中,只有登录视图。但到目前为止,我还没有找到一种干净的方法来做到这一点。

0 投票
0 回答
68 浏览

javascript - Durandal冗余路径和模块定义

为什么我需要命名路径,并再次定义模块,这不是多余的吗?

0 投票
1 回答
392 浏览

durandal - 具有相关模块 ID 的 Durandal 子路由器设置

我正在尝试配置 Durandal 子路由。我有一个由父路由器负责的公共部分:

然后子路由器应该负责私有部分。用户登录后,我正在映射子路由器的路由。根据用户类型(管理员、用户),我正在使用适当的路由激活子路由器:

第一次初始化路由器时一切正常,但如果我返回主路由器(登录视图)并执行另一次登录,则子路由器会添加两次相关的 moduleId。

第一次登录后,路由具有 moduleId 'viewmodels/private/ route ',这是正确的,但第二次登录初始化子路由器时,路由具有 moduleId 'viewmodels/private/viewmodels/private/ route '。

什么时候应该:

我无法确定可能导致这种情况的原因。有什么帮助吗?

0 投票
0 回答
449 浏览

durandal-2.0 - 如何调试 Durandal

我有一个微不足道的 Durandal 应用程序正在工作,暂停了一个 html 页面中的功能原型,仅因为它位于同一个文件夹中,然后返回到 Durandal 应用程序才发现当 shell 正在构建菜单时,视图似乎没有加载或至少渲染。# url 发生了变化,仅此而已。

当我在视图或 shell.js 中破坏 JS 时,我之前曾看到过这种情况,但我尝试将路由表剥离到主视图,该主视图基本上是带有空视图的静态 html,但它仍在发生。

问题与其说是“为什么我的应用程序视图显示为空白”,不如说是“如何解决这个问题”。没有呕吐,只有白色的沉默。我不喜欢猜谜游戏,我无法相信一个经过深思熟虑的框架缺乏故障排除策略。

是的,我看过http://durandaljs.com/documentation/Debugging.html页面。在我的 main.js打开了调试,但我不知道如何从这里开始。

那么,当这种情况发生时,通常从哪里开始呢?一些日志记录似乎是有序的,但我不知道把它放在哪里。

我像这样标记了applicationHost div

并且在 shell 调用 router.activate() 后立即消失

好的,我找到了具体问题,它是 shell.html 中的错误绑定 - 绑定目标的名称已更改,需要更新绑定。

但是如何找到这些东西的问题仍然存在。我的应用程序非常简单。“检查所有内容并希望您发现任何问题”不适用于复杂的应用程序。

在没有任何建议的情况下,我开始认为唯一可用的策略是通过不断的回归测试只进行增量更改。

0 投票
1 回答
878 浏览

url-routing - Durandal - 子路由器可以重复使用相同的模型

我正在尝试将路由器配置为允许一个模型用于多个视图。

它是一个“配置文件”模块,所以我有一个像这样的顶级路由器:

在 myprofile.js 模块中,我有子路由器:

我的理解是,如果我使用 splat 路由(配置文件*详细信息)声明主模块,并且该模块在定义子内部路由的路由器属性上返回一个子路由器,那么我可以继续使用子模块与每个内部视图组成。

基本上我想将 viewmodels/myprofile.js 模块与

意见/我的/details.html

意见/我/resume.html

等等。

使用带有 Breeze 的 unitofwork,此模式将使我能够在每个子视图的停用时强制保存检查,但无需再次重新加载整个配置文件。

似乎 canReuseForRoute 属性可能有用,但我认为没有必要给http://durandaljs.com/documentation/Using-The-Router.html - 模块重用 -

考虑历史更改导致导航导致与已处于活动状态并正在查看的相同模块的情况。通常,即使模块是相同的类型,它也会被丢弃并创建一个新实例。这有两个例外:

如果模块有与之关联的子路由器。该实例将被保留。如果模块实现了一个特殊的回调,称为 canReuseForRoute,这个函数将被调用,允许开发者决定是否应该丢弃模块。

我错过了什么吗?有可能实现这一目标吗?

谢谢。