问题标签 [knockout-amd-helpers]

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 回答
469 浏览

knockout.js - 使用淘汰赛 amd 助手控制 Applybindings

我正在使用Knockout AMD Helpers加载 ViewModels,并带有“模块绑定”功能。

通常,当我需要加载远程数据时,我使用延迟对象来确保只有在 ViewModel 上的所有数据都可用后才调用 ko.ApplyBindings。

我创建了一个示例 jsfiddle来使用延迟的 ajax 调用来说明我的问题:

如何构建我的代码,使用 AMD 帮助程序但延迟 ApplyBindings,直到我的所有数据都在 ViewModel 上准备好?

0 投票
1 回答
401 浏览

knockout.js - 使用 knockout-amd-helper 插件和 pub-sub 进行淘汰 - 发布发生在订阅它的模块加载之前

首先,我是 knockoutjs 的新手,我已经开始使用 knockout-amd-helpers 开发应用程序,并且我们正在使用 require.js 来加载模块。我在发布订阅方面面临以下问题:

我的主页有两个部分,navigation 和 mainContainer,它们都作为模块(外部 html 模板和 js 文件)加载,并且我正在使用 observable 设置模块的名称,以便可以动态替换它。在 mainContainer 中,有一棵树,如果用户单击树的任何节点,则应该发生两件事。1. 整个 mainContainer 模块需要在同一个 div 标签中替换为另一个名为“detail”的模块。2. 基于树中的节点,即用户在 mainContainer 中单击,我需要将该值作为参数传递给这个“详细信息”模块。

我想我可以实现 1. 通过将模块名称设置为 observable 和 2. 通过在特定主题的 mainContainer 和详细模块中发布节点值,我需要订阅该主题并使用“数据”传递给模块' 属性。

因此,在树节点的 onclick 事件中,我发布了节点值,并更改了 observable 中的模块名称值,从而成功地将 mainContainer 替换为详细模块。但是在详细信息模块中,即使我订阅了已发布的主题,它也无法获取值,因为此订阅发生在详细信息模块中,并且一旦用户单击节点,详细信息模块就已加载,并且因此,在 mainContainer 中已经进行了发布之后。所以我订阅了一个已经发布的主题,因此无法获得过去的发布值。

我通过调用根模块(细节模块的父级)上的 subscribe 来临时解决这个问题,但在我看来这是一个肮脏的解决方案,理想情况下我想将此逻辑保留在细节模块本身中。

这更像是一个设计问题,所以我没有发布代码,但我想知道是否有人可以评论我是否应该以不同的方式处理这个问题,或者是否有技术解决方案。

谢谢

0 投票
0 回答
124 浏览

knockout.js - 使用 knockout amd helper 进行淘汰 - 推荐的文件夹结构

我们正在使用 knockoutjs 来开发我们的 Web 应用程序,并且我们正在使用 knockout-amd-helpers 插件。我对推荐的文件夹结构有疑问。目前我们的文件夹结构是这样的

/应用程序

/app/js

/app/js/viewmodels(模块的基本目录-ko.bindingHandlers.module.baseDir = "viewmodels";)

/app/js/libs(包含敲除和其他库js)

/app/templates(包含所有以 .tmpl.html 结尾的 html 模板)

/app/index.html

但是,建议通过视图模型和模板 html 驻留在该特定功能的同一子目录中的功能来重构此文件夹布局。例如,

/app/functionality1/functionality1.tmpl.html

/app/functionality1/functionality1.js

似乎很多基于 Angularjs 的客户端架构都使用这种方法,它们将 html 和 js 文件保存在同一目录中。

所以我想知道是否有推荐的基于 knockoutjs 的客户端应用程序的文件夹结构。

0 投票
1 回答
296 浏览

jquery - 如何在淘汰赛js AMD助手中将模块加载到其他模块中

我如何将 javascript 模块加载到另一个模块中以供使用,例如,我希望一个模块具有一个对象,我想使用该对象在另一个模块中创建该对象的实例。

示例:对象模块:

`

对于模块的第二部分,我有这个代码

我收到此错误“未捕获的 ReferenceError:未定义 postobj”

0 投票
1 回答
568 浏览

knockout.js - RequireJS Knockout Amd-Helper

我正在努力使用 requireJS 安排我的代码,并将感谢任何帮助。

我有一个dashboard.html,它绑定到dashboard-init.js 中的“仪表板”视图模型。仪表板视图模型有一个面板列表,这些面板在dashboard.html 中显示为列表。

渲染完成后,我调用 gridList 函数将列表转换为仪表板。

请注意,如果我只是使用 script src=... 等将这些脚本包含在 html 中,这将正常工作。

但是当我删除脚本标签并将这些依赖项推送到仪表板视图模型时,我收到了这个错误:

我需要做什么才能满足 GridList lib 要求?

这是给出此错误的页面(dashboard.html):

这是 common-init 的样子:

});

这是仪表板初始化

});

最后,这是仪表板模块:

});

另外,我不喜欢我需要在视图模型中引用#grid 但不知道更好的事实。任何建议都会有所帮助。

谢谢

0 投票
2 回答
209 浏览

javascript - knockout with require js - Not loading correctly

Hi folks im having a bit of difficulty wraping my head around using require js and knockout js together. I`m trying to implement require js onto an existing project I had going. Everything was going well until I hit a road block with knockout.

I was trying to follow the example provided on the knockout page here: http://knockoutjs.com/documentation/amd-loading.html

When trying ko.applyBindings(new GDI_Application()); it just comes back as undefined. Ive also setup https://github.com/rniemeyer/knockout-amd-helpers to load external templates. Followed another guide here http://www.newsuntold.dk/post/using-requirejs-and-knockout-amd-helpers-with-knockout but still dosent make any difference still getting Uncaught TypeError: undefined is not a function

What do you guys think im missing?

UPDATED CODE: My HTML code:

Here is my GDI_MAIN js code:

This is the GDI_Application code:

0 投票
0 回答
33 浏览

knockout.js - Knockout AMD Helpers 中的错误处理

我正在使用 Knockout AMD helpers 项目,这很好,因为我可以更好地模块化我的淘汰模块。

我的问题是它似乎完全隐藏了错误。这在一个小项目中并不是什么大问题,但是随着项目的增长,如果在控制台中可以看到错误将会很有帮助。

所以我刚刚遇到了一个情况:

如果函数 doStuff 不存在,则整个模块将无法工作。显然,一旦知道错误,就很容易修复,但识别此错误似乎并不容易,因为 Knockout 不会将其记录到控制台。

基本上,如果这个项目要被一组开发人员用于生产系统,我希望它能够以某种方式报告绑定错误。

我在这里错过了什么吗?

谢谢