问题标签 [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.
knockout.js - Durandal 小部件不更新视图模型
我用 durandal 写 spa 网站。在我使用小部件之前,一切都很好。小部件不更新我的模型。
我的小部件视图模型:
我的小部件视图:
然后我把我的小部件改成这个,它就可以工作了。有一个更好的方法吗?
我的小部件视图模型:
我的小部件视图:
我的视图模型:
我的观点:
ko.mapping.fromJS 解决了我的问题,不需要这个改变。
javascript - Durandal - 防止在返回列表视图时重新加载
我的 durandal 应用程序上有一个经典的主详细信息视图,在第一个视图中我有一个实体列表和一个过滤器框,这个过滤器框使列表使用应用的过滤器刷新。
单击条目会使浏览器导航到详细信息视图。这里一切都好。问题是当我返回时,我的所有过滤器选择都消失了,并且列表重新加载而没有过滤器。我看过 durandal 样本,这不应该发生,调用了 activate 方法,但没有实例化 VM。
有人可以在这里给我一些指示。所有路由器设置、激活等都是默认设置。
我正在使用 durandal 2.0
javascript - 除非我将路由器绑定到视图,否则 Durandal 子路由器的 activeItem 不会改变
我使用 durandal 为我的一个视图模型设置了一个子路由器。但是,当路由器导航到第二个子路由时,我无法读取路由器的 activeModule,除非我还编写了与子路由对应的视图。谁能解释这里发生了什么?
下面是我的代码:
父视图模型:
父视图:
子视图模型和视图非常无聊。但是,如果我取消注释上面的注释行,那么我会在下一个 div 中看到预期的结果。否则,无论我是点击第一个还是第二个,我总是只看到第一个模块。
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?谢谢你的帮助。
durandal - 使用主构建文件结果运行 durandal 应用程序不起作用
我在使用 weyland 生成的优化代码时遇到了一些问题。这是我到目前为止所做的:
这是我的项目结构:
这是我的 weyland-config 文件:
}
这是我在 index.html 文件中添加的内容,用于运行生成的文件,而不是我创建的文件:
我也尝试过使用:
这是我之前的:
在命令行上运行 weyland build 后,生成的主构建文件没有任何错误。
如果我尝试运行应用程序,则应用程序会在开始屏幕上冻结,就好像永远不会调用 app.start() 方法并且不会显示任何错误一样。
我已经检查了 chrome 调试工具,客户端收到了主构建的文件,它似乎什么也没做。
我究竟做错了什么?
编辑
我还尝试使用 almond-custom 构建并添加此附加配置:
当我尝试运行该应用程序时,出现此错误:
在我的主要失败中,我正在加载“durandal/app”抛出的 require js,由于某种原因它再也找不到它了
knockout.js - 导航到同一模块并使用不同数据查看时,Durandal 重新绑定
我的应用程序中有一对视图模型/视图,用于显示不同的数据。显示的数据由一些用户输入生成,并且每组数据的单独路由在路由器上注册。
问题是因为相同的view/viewmodel用于不同的路由,当在它们之间导航时,view-viewmodel之间的绑定没有刷新。
连接到canReuseForRoute
回调我设法让 viewModel 刷新,但视图没有刷新。
我尝试cacheVews
在router
绑定上使用,但视图仍未刷新。
导航到使用相同视图/视图模型的不同路由时,如何使路由器/路由组合刷新?
编辑:(更多信息)挂钩binding
回调我发现 Durandal 仅在第一次使用模块时绑定视图。如果我尝试使用相同的模块(视图/视图模型)导航到不同的路线,它不会binding
再次调用回调。
excel - 如何使用 DurandalJS 创建和使用 Excel Web App?
我正在尝试将 Excel Web App 添加到 DurandalJS 网站。基本上,我从服务器获取一个 JSON 对象,将其转换为<table>...</table>
标签,以便 Excel Web App 可以理解它。然后我希望能够使用 Excel Web App 查看该表(调整列大小、选择、排序、过滤等)。
首先,我正在尝试最简单的解决方案 - 硬编码![<table />][1]
:
- 创建了一个新的 DurandalJS 项目(使用他们网站上的模板)
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
.
有什么想法可以让我有类似 Excel 的行为来查看 Durandal 下的表格吗?
谢谢!
PS:我真正的项目是在 Durandal 1.2 上工作,但目前我会采取任何解决方案,甚至是 Durandal 2.0。
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 配置:
knockout.js - 在哪里触发绑定应用
在 Durandal 应用程序中,我有一个对话框,其中包含绑定到视图模型的视图。
每个输入元素的标签元素都包含一个用 icon-warning-sign 完成的警告字形。每个字形的可见性由数据绑定控制,如下所示:
电子邮件是视图模型的可观察属性。hasError 属性是由扩展器创建的子可观察对象。其中有几个,这是一个示例。只有验证实现有所不同。
这是扩展器的示例使用。
除 IE8 外,一切正常。请不要从花生画廊中嘲笑 IE8,它是客户的 SOE,仅此而已。在 IE8 中,当对话框打开时,警告字形不可见。如果您编辑输入的值,则字形的可见性会正确更新,因此绑定和逻辑可以正常工作。
首次显示对话框时如何触发评估?
更多信息:在转换到 hasError() == true 之前,字形不会变得可见。因此,如果页面以给定输入的 hasError true 开头,那么您必须使 hasError 返回 false 然后再次返回 true 以使字形可见。
angularjs - AngularJs 注入来自不同域的控制器
我一直在将 DurandalJs 用于我开发的应用程序,其中我有一组核心功能(JS、Html 文件)保存在域 XXX 中。我有一个客户端应用程序(域 YYY),它使用来自域 XXX 的 JS、Html 文件。我将 DurandalJs 设置为从不同的域注入 JavaScript viewModel(和关联的视图)。它工作得非常好。
我正在学习 AngularJs,并试图弄清楚如何做同样的事情。是否可以使用 AngularJs 从不同的域注入 JavaScript 资源?
谢谢你的帮助。