问题标签 [durandal]

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 投票
4 回答
6033 浏览

javascript - 在 HotTowel SPA 中使用 Durandal 定义模块的 jQuery 依赖项

我正在兜圈子,试图理解 RequireJS 以及如何使用它来加载当我尝试在模块中使用它们时不显示为未定义的依赖项。

我从 John Papa 的 Pluralsight“带有 HTML5 的 SPA”课程开始。我从来不明白的是,为什么需要在脚本标签中指定每个库,而我认为 AMD 在 requireJS 中的全部意义在于您将责任移交给它及其 data-main 属性以异步加载需要什么。该课程中提出的解决方案令人倍感困惑的是,它没有遵循 RequireJS 文档中记录的整个数据主设置。

再过几个月,我们现在有了带有 Durandal 的“热毛巾”模板、一个示例“服务”模块、一个遵循 RequireJS 文档的设置和一个相当容易理解的入门应用程序。唯一能敲响警钟的是,大多数库都位于通常的“脚本”文件夹中,而 Durandal 与应用程序逻辑一起位于完全独立的“应用程序”文件夹中。如果我从pluralsight SPA 课程中学到一件事并使用requireJS,那就是将东西从单个文件夹中移出,事情很快就会变得非常混乱。

无论如何,新模板工作正常。模块依赖关系很好,视图和视图模型是绑定的,并且有一个示例记录器模块,其模块依赖于 Durandal 模块(即在应用程序文件夹中),效果很好。根据 Hot Towel 模板中的代码添加另一个使用 jQuery 和 mockJson 的简单模块应该很简单,对吧?呃,不,不是真的。

这是一个非常简单的声明,用于在“app/services”文件夹中启动我的模块“dataservice.js”

当我尝试在我的代码块中访问它时,我当然会为 $ 得到“未定义”。因此,在阅读了太多令人困惑的文献之后(其中大部分最终都以评论说“这在 jquery xxxx 中发生了变化,因此不再相关”),我有以下问题:

  1. 当我监控网络流量时,我可以看到 jQuery 库正在正确下载,如果我将其添加到 BundleConfig.cs 中定义的“供应商”捆绑包中,mockJSON 也是如此,所以 jQuery 在那里并在我的浏览器中等待,即使我没有我自己没有给它一个模块定义。要摆脱模块文档中的“未定义”引用似乎意味着我需要添加如下内容:

    (“文本”声明已经存在。我刚刚添加了 jquery 别名)这导致我的模块有一个函数而不是“未定义”,它解决了部分问题,除了它导致我已经复制的脚本的第二个副本由于 Hot Towell 模板“供应商”捆绑包而下载。出于明显的原因,我不想下载两份 jQuery,那么我该如何解决这个问题?

  2. 我已将 mockJSON 库添加到我的“供应商”捆绑包中,这通常使用 $.mockJSON 来引用,我无法做任何事情来使其有效。即使我使用与 jquery 相同的过程对脚本的引用进行了破解,我使用 'require.config({paths:' 声明我得到了未定义,更不用说已经提到的'库被下载了两次'的问题. 如何获得定义的库依赖项,以便在模块中使用该库?

  3. 我猜所有这些痛苦都与 requireJS 是关于下载异步模块的事实有关,但 jQuery 和 mockjson 是同步的,所以我必须通过其他方式下载它们(捆绑硬编码参考)但这仍然意味着我的 requireJS模块需要一种将它们声明为依赖项的方法,而我尝试过的任何方法都不起作用。我关于这是一个同步/异步问题的假设是否正确?我曾希望在 Durandal 中找到至少一个使用 jQuery 的示例应用程序,最好是一个 jquery 插件,但我只能看到使用 Durandal 模块而不是其他任何东西的模块代码。所有这些库都在 requireJS 的主根之外的事实可能会加剧问题,因为我不得不求助于其中包含“../”字符串的路径来获取引用。

  4. 我知道 requireJS 在定义命令上使用“约定优于配置”,因此如果我错过了模块 ID,那么它会根据模块源文件名和使用 data-main 指定的已定义根文件夹的路径假定一个 ID。然而,Durandal 在其代码中引用了一个名为“入口”的模块。这个模块不在根文件夹中,而是在一个名为“Durandal/transitions/entrance.js”的文件夹中,所以我很困惑为什么对它的任何引用都是“入口”而不是“Durandal/transitions/entrance”。它在哪里被别名?

  5. 最后(hoorah)我还没有掌握将依赖项指定为定义语句的第一个参数(字符串数组)与省略这些依赖项之间的细微差别,但是在模块工厂中,它成为第一个参数,指定类似 var system = require('../system') - 为什么我会优先使用一种形式而不是另一种形式。我看到这两种类型在示例应用程序中混合在一起,但不明白为什么。

PS:当我编辑此条目时,我看到编号为 1 到 5 的五个问题。当我查看它时,我看到它被渲染为 1,然后是 1 到 4。一些奇怪的 HTML 编辑器与渲染错误,无论我尝试什么格式,我都没有'无法修复,所以请发表任何评论,就好像有五个问题编号为 1 到 5 而不是 2 个编号为 1 和三个编号为 2 到 4!)

0 投票
2 回答
1056 浏览

single-page-application - durandal 是预先加载所有视图模型/视图还是按需加载?

Durandal 是否在初始加载/前期加载 ViewModels/View 或按需加载它们。

假设我有一个非常大的网站,有 100 个或更多页面/视图,每个视图都有一个相当大的 viewModel。Durandal 会预先加载所有这些吗?

每个视图中的数据调用怎么样,如果预先加载它们会被触发吗?

试图了解杜兰达尔的行为

0 投票
1 回答
368 浏览

css - 使用 Bootstrap 流体样式时,Durandal/Hot Towel 模板将 body max-width 设置为 1100px 的原因是什么?

在使用带有 Durandal 的“Hot Towel”SPA 模板时,值得注意的是,视图位于宽度为 1100 像素的中间窗口中,而不是使用所有可用空间。

然而,applicationHost 中的所有视图都设置为使用来自 Twitter“流体”样式的 Bootstrap。实际上,在 body 标签上设置的硬编码最大宽度使所有这些流畅的样式变得多余且毫无意义。

覆盖 app.css 中设置的主体样式很容易(假设将其设置为高得离谱的值不会有副作用)但我只是想知道是否有人知道在模板中以这种方式设置它的原因,因为它正在取消尝试实现所有那些 Bootstrap“*-fluid”样式试图实现的响应式设计的所有好的工作。

0 投票
3 回答
6834 浏览

durandal - 在 Durandal 的组合视图中激活函数

我有这样的 Shell html

和 shell js 一样

问题是标题上的激活函数没有被调用,但仪表板上的那个被调用,我必须在标题中获取一些 ajax 内容并绑定它,我该如何实现

我想保持这个逻辑分开,因为我不希望我的外壳有这个逻辑

供参考我的标题(为了简化我已经将我的复杂模型转换为一个简单的可观察的

header html 的最简单形式是

0 投票
2 回答
1937 浏览

jquery - 什么时候应该在 DurandalJS 中调用 jQueryUI 装饰函数?

在 viewmodel.js 文件中,我想在文本框上绑定一个日期选择器。

这是代码

看来 jquery 和 jqueryui 从未被调用过。我的代码有什么问题?activate()我应该在该部分或其他地方启动 jQuery 和 jQuery UI 方法吗?

0 投票
1 回答
2883 浏览

requirejs - Durandal / Require.JS - 未找到信号器/集线器参考

我正在使用“HotTowel”单页应用程序模板,但我无法让 SignalR 正常工作。我收到以下错误:

我有一种使用标准 MVC 4 单页应用程序的样板,有一个非常简单的集线器(用户在线计数器)。一切正常。

在我切换到“HotTowel”后它停止工作。我与 John Papa 进行了核对,他给了我一个建议,让我检查 Durandal 一侧,因为他提到他知道将对一些干扰某些路由的问题进行一些修复。

主.js:

全球.asax.cs:

热毛巾\index.cshtml:

(我知道这可能不是放置它的地方,但我无法让它出现在我的资源中,直到我把它放在这里)-顺便说一句,如果你能告诉我正确的方法,我会很感激

我还能告诉你什么来帮助我解决这个问题?我有对 SignalR 等的所有引用...我有一个使用另一个项目模板的工作示例...

有人可以指导我吗?

它应该很容易复制:

  1. 只需使用“热毛巾”模板
  2. 添加所有 SignalR 引用
  3. 用我的代码测试

我在想 Durandal 或 Require.Js 都会阻碍这一点。有人可以挽救这一天吗?:)

0 投票
1 回答
91 浏览

javascript - 了解两种 Javascript 语法之间的差异

我是 javascript 新手,所以请原谅我提出这样一个新手问题。我一直在尝试通过查看 SPA 示例来学习 javascript 语言,这些示例使用以下库 durandal、knockout js 和微风 js、sammy 和 require,并且我认为我正在尝试使用模块模式。我遇到了不同的代码语法如下

我的问题是

  1. 过度使用一种语法有优势吗?
  2. 上面代码块中的变量“model”会有全局作用域吗?
  3. 从函数中访问“title”变量的最佳方法是什么?我应该使用 this.title 吗?

先感谢您。

0 投票
1 回答
1026 浏览

javascript - Javascript SPA 多语言和本地存储

我正在使用 DurandalJs 和 BreezeJs 作为客户端的主要技术开发 JavaScript SPA。我想知道我可以使用哪些库来做我的应用程序支持不同的语言。我一直在进行一些搜索,发现 JED.js ( http://slexaxton.github.com/Jed/ ) 是完成这项任务的一个不错的选择。

但是我不太确定,有人可以为这项任务推荐 nay 库,或者给我一些关于 JED.js 的意见。

另外我想询问一些用于在浏览器中存储信息的库。有人可以给我推荐一个吗?我在 amplify.js 中想过,它提供了很好的功能来向服务器发出请求并缓存此信息。但是在我的应用程序中,我使用的是轻风,所以这部分是不需要的。我只需要存储一些数据,比如用户名和一些小信息。

很感谢。

我的解决方案:

我已经使用 amplify.storage 实现了我的系统,用于在浏览器中存储信息,并使用 i18next ( http://i18next.com/ ) 使我的应用程序可用于不同的人类语言。

0 投票
1 回答
1478 浏览

knockout.js - 如何将 Durandal#composition 集成到淘汰赛模板引擎中

我使用允许模板用于渲染行的 kendo ui 网格。它使用 KO 模板引擎,希望模板在标签中,但是我想将模板外部化并使用 Durandal Compose 插件......知道如何轻松挂钩吗?

0 投票
1 回答
4067 浏览

durandal - 如何在 Durandal 路由器中使用 splat 参数?

我正在看的文章是Durandal Router

mapAuto,它说我们可以在 url 中传递 splat 参数#/customers/1。并且activate视图模型中的函数将能够检索参数数组。

我在这里建了一条路线

但是我怎样才能获得函数id中的activate?文档页面上没有示例。请帮助我们。谢谢你。