问题标签 [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 投票
0 回答
507 浏览

knockout.js - Durandal 小部件不更新视图模型

我用 durandal 写 spa 网站。在我使用小部件之前,一切都很好。小部件不更新我的模型。

我的小部件视图模型:

我的小部件视图:

然后我把我的小部件改成这个,它就可以工作了。有一个更好的方法吗?

我的小部件视图模型:

我的小部件视图:

我的视图模型:

我的观点:

ko.mapping.fromJS 解决了我的问题,不需要这个改变。

0 投票
1 回答
152 浏览

javascript - Durandal - 防止在返回列表视图时重新加载

我的 durandal 应用程序上有一个经典的主详细信息视图,在第一个视图中我有一个实体列表和一个过滤器框,这个过滤器框使列表使用应用的过滤器刷新。

单击条目会使浏览器导航到详细信息视图。这里一切都好。问题是当我返回时,我的所有过滤器选择都消失了,并且列表重新加载而没有过滤器。我看过 durandal 样本,这不应该发生,调用了 activate 方法,但没有实例化 VM。

有人可以在这里给我一些指示。所有路由器设置、激活等都是默认设置。

我正在使用 durandal 2.0

0 投票
0 回答
1047 浏览

javascript - 除非我将路由器绑定到视图,否则 Durandal 子路由器的 activeItem 不会改变

我使用 durandal 为我的一个视图模型设置了一个子路由器。但是,当路由器导航到第二个子路由时,我无法读取路由器的 activeModule,除非我还编写了与子路由对应的视图。谁能解释这里发生了什么?

下面是我的代码:

父视图模型:

父视图:

子视图模型和视图非常无聊。但是,如果我取消注释上面的注释行,那么我会在下一个 div 中看到预期的结果。否则,无论我是点击第一个还是第二个,我总是只看到第一个模块。

0 投票
1 回答
127 浏览

javascript - 使用 DurandalJs 加载远程视图

我正在学习 DurandalJs 并尝试从不同的域加载远程视图,但是,requireJs 不断将“.js”附加到我的 html 视图的 url 中,导致 404 错误。我的目标是建立一个框架,我可以在其中为使用我的应用程序的不同客户重用 html 片段。这是我的客户端应用程序的 index.html 文件中对 requirejs 的调用:

请注意,我正在从与我的客户端应用程序完全不同的域加载 require.js。我正在将我的应用程序的入口点设置为 myframework.com 服务器上存在的 framework.js。这是farmework.js:

在我的远程服务器上的 framework.js 运行后,我在我的框架中建立了一组资源路径。我还将 baseUrl 设置为驻留在我的客户端实现上的“app”。所以,最终结果是我有一组远程资源和一组本地资源。请参阅此链接:我如何完成此操作的来源

无论如何,到目前为止,一切都在进行中。我能够加载我的远程资源。我可以在我的客户端上加载“主要”。尝试加载远程视图模型和关联视图时会发生此问题。我有一个“appBase”路径,我希望在其中拥有通用的 viewModel 和视图,以便在我的应用程序的不同实现中加载。我的路线设置如下:

请注意,我使用 'appBase/viewmodels/home' 作为 moduleId。appBase 是在我的框架中建立的路径之一,它指向我的远程服务器上的一个位置。requireJs 正在查找远程资源的路径,但它将“.js”附加到 html 文件扩展名,导致 404 未找到。requireJs 正在产生这个:

关于如何让 DurandalJs 在远程服务器上加载视图模块及其视图的任何想法?为什么 .js 会附加到 html 资源的 Url?谢谢你的帮助。

0 投票
0 回答
213 浏览

durandal - 使用主构建文件结果运行 durandal 应用程序不起作用

我在使用 weyland 生成的优化代码时遇到了一些问题。这是我到目前为止所做的:

这是我的项目结构:

在此处输入图像描述

这是我的 weyland-config 文件:

}

这是我在 index.html 文件中添加的内容,用于运行生成的文件,而不是我创建的文件:

我也尝试过使用:

这是我之前的:

在命令行上运行 weyland build 后,生成的主构建文件没有任何错误。

如果我尝试运行应用程序,则应用程序会在开始屏幕上冻结,就好像永远不会调用 app.start() 方法并且不会显示任何错误一样。

我已经检查了 chrome 调试工具,客户端收到了主构建的文件,它似乎什么也没做。

我究竟做错了什么?

编辑

我还尝试使用 almond-custom 构建并添加此附加配置:

当我尝试运行该应用程序时,出现此错误:

在我的主要失败中,我正在加载“durandal/app”抛出的 require js,由于某种原因它再也找不到它了

0 投票
1 回答
3454 浏览

knockout.js - 导航到同一模块并使用不同数据查看时,Durandal 重新绑定

我的应用程序中有一对视图模型/视图,用于显示不同的数据。显示的数据由一些用户输入生成,并且每组数据的单独路由在路由器上注册。

问题是因为相同的view/viewmodel用于不同的路由,当在它们之间导航时,view-viewmodel之间的绑定没有刷新。

连接到canReuseForRoute回调我设法让 viewModel 刷新,但视图没有刷新。

我尝试cacheVewsrouter绑定上使用,但视图仍未刷新。

导航到使用相同视图/视图模型的不同路由时,如何使路由器/路由组合刷新?

编辑:(更多信息)挂钩binding回调我发现 Durandal 仅在第一次使用模块时绑定视图。如果我尝试使用相同的模块(视图/视图模型)导航到不同的路线,它不会binding再次调用回调。

0 投票
2 回答
133 浏览

excel - 如何使用 DurandalJS 创建和使用 Excel Web App?

我正在尝试将 Excel Web App 添加到 DurandalJS 网站。基本上,我从服务器获取一个 JSON 对象,将其转换为<table>...</table>标签,以便 Excel Web App 可以理解它。然后我希望能够使用 Excel Web App 查看该表(调整列大小、选择、排序、过滤等)。

首先,我正在尝试最简单的解决方案 - 硬编码![<table />][1]

  1. 创建了一个新的 DurandalJS 项目(使用他们网站上的模板)
  2. welcome.html用我在ExcelMashup.com上找到的以下代码替换了 的内容:

<a href="#" name="MicrosoftExcelButton" data-xl-tableTitle="My Title" data-xl-buttonStyle="Standard" data-xl-fileName="Book1" data-xl-attribution="Data provided by MY Company" ></a>

<table> ... </table>

<script type="text/javascript" src="https://r.office.microsoft.com/r/rlidExcelButton?v=1&kip=1"></script>

但 Durandal 只会显示表格数据,而忽略 Excel 按钮。当我尝试将最后一行 ( <script/>) 移动到index.cshtml.

这就是它在 Durandal 上的样子

有什么想法可以让我有类似 Excel 的行为来查看 Durandal 下的表格吗?

谢谢!

PS:我真正的项目是在 Durandal 1.2 上工作,但目前我会采取任何解决方案,甚至是 Durandal 2.0。

0 投票
1 回答
122 浏览

durandal-2.0 - Weyland 输出的注意事项

使用 Durandal 的优化伴侣 Weyland,我们可以将所有 .js 和 .html 文件合并到 main-built.js 中,并使用 Almond 跳过 RequireJS。我们按照文档中的描述执行此操作:http: //durandaljs.com/documentation/Weyland.html
http://durandaljs.com/documentation/Automating-Builds-with-Visual-Studio.html
(是的,它是一个 ASP .NET MVC 项目)

然而,我们看到 main-built.js 越来越大。

Weyland 的考虑因素是什么?我们能以不同的方式处理这个问题吗?我们应该以不同的方式处理这个问题吗?如果我们的项目增长,主构建文件也会增长。然后启动负载将增加,并且可能并非所有用户都需要下载整个项目(安全方面的用户来自不同的区域)。

希望有人能对此有所了解吗?

当前的 Weyland 配置:

0 投票
0 回答
88 浏览

knockout.js - 在哪里触发绑定应用

在 Durandal 应用程序中,我有一个对话框,其中包含绑定到视图模型的视图。

每个输入元素的标签元素都包含一个用 icon-warning-sign 完成的警告字形。每个字形的可见性由数据绑定控制,如下所示:

电子邮件是视图模型的可观察属性。hasError 属性是由扩展器创建的子可观察对象。其中有几个,这是一个示例。只有验证实现有所不同。

这是扩展器的示例使用。

除 IE8 外,一切正常。请不要从花生画廊中嘲笑 IE8,它是客户的 SOE,仅此而已。在 IE8 中,当对话框打开时,警告字形不可见。如果您编辑输入的值,则字形的可见性会正确更新,因此绑定和逻辑可以正常工作。

首次显示对话框时如何触发评估?

更多信息:在转换到 hasError() == true 之前,字形不会变得可见。因此,如果页面以给定输入的 hasError true 开头,那么您必须使 hasError 返回 false 然后再次返回 true 以使字形可见。

0 投票
1 回答
76 浏览

angularjs - AngularJs 注入来自不同域的控制器

我一直在将 DurandalJs 用于我开发的应用程序,其中我有一组核心功能(JS、Html 文件)保存在域 XXX 中。我有一个客户端应用程序(域 YYY),它使用来自域 XXX 的 JS、Html 文件。我将 DurandalJs 设置为从不同的域注入 JavaScript viewModel(和关联的视图)。它工作得非常好。

我正在学习 AngularJs,并试图弄清楚如何做同样的事情。是否可以使用 AngularJs 从不同的域注入 JavaScript 资源?

谢谢你的帮助。