问题标签 [mithril.js]
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.
javascript - Mithril js - 跨组件通信模式
我在这里http://jsfiddle.net/c641oog2/的跨组件通信实现与此处描述的不同:http: //lhorie.github.io/mithril/components.html#librarization。目标是创建一个易于集成和可扩展(可在其他组件中重用)的组件,即库化。
我的代码的主要部分:
主要区别在于组件之间的通信方式。在我的实现中,我决定使用观察者,在文档的实现中,他通过创建纯函数来实现,然后在仪表板的“视图”函数中使用这些函数,其中正确的参数被传递给自动完成的“视图”函数功能。
我的问题:
- 如果您必须在这两种实现之间进行选择,为什么要选择另一种呢?
- 在函数式编程模型中,像观察者模式这样的 OOP 概念是否令人不悦?
- 是否有更简洁但可扩展的方式在 FP / 使用不同的模式中实现这一点?
mithril.js - 带启动参数的模块控制器
使用时m.module
,我经常想为控制器构造函数提供参数,以便第一次渲染以正确的数据开始。但是,秘银文档和示例总是显示module.controller()
并且module.vm.init()
没有参数。
为了解决这个问题,module.controller(initData)
我已经求助于使用这个小的实用程序函数来包装和扩展现有的 m.Module:
问题:
- 这是反模式吗?是否有另一种推荐的方法用自定义外部数据实例化模块?
- 这会导致 m.route 出现问题吗?我在源代码中看到了一些关于递归调用的提及,但我无法理解它。
- 遵循以上两点,是否缺少参数来
m.module
进行刻意的设计选择?
哦...感谢所有参与现有文档和讨论的人。
javascript - 从视图调用异步加载模块函数
我正在尝试按需(根据用户输入)异步加载包含另一个秘银模块的 JS 文件,并使用 http://lhorie.github.io/mithril-blog/integrating-mithril中描述的异步模块加载器技术-和-requirejs.html
我可以完成这项工作的唯一方法是调用异步加载模块函数并从一个从视图的 onlick 函数调用的基本模块控制器实例化新加载的模块的构造函数。由于文档声明我们不应该从视图中实例化一个新的控制器(或调用一个这样做的函数 - 这是我的情况),我想知道这是否被认为是反模式以及是否有更好的方法来做到这一点。
提前致谢。
javascript - 具有反序列化属性的 m.request 未返回字符串
根据API 文档中的示例,我正在尝试使用 m.request 实用程序(设置了反序列化标志)来获取 .txt 文件的内容作为字符串;
然而,输出
实际上是字符串:
不是文件中的预期内容。我确定我遗漏了一些东西,或者错误地设置了 m.request 选项 - 谁能指出我正确的方向?
javascript - 使用 background:true 时,如何在 MithrilJS 中使用 m.request 的值?
我在一个项目中使用 m.request,并且由于我有一个可能长时间运行的请求,我想用background:true
. 但是,似乎该值永远不会设置为生成的m.prop
.
我已经制作了一个 jsFiddle,其中包含一个基于此Stack Overflow 答案的示例:http : //jsfiddle.net/u5wuyokz/9/
我期望发生的是对视图的第二次调用应该有响应值ctrl.test.data()
,但它似乎仍然有undefined
。在Point A
代码中,它记录了正确的值。但是,在Point B
,它记录false, undefined
然后true, undefined
。
我不确定我做错了什么,或者这是预期的行为。
来自 jsFiddle 的代码:
mithril.js - 秘银仅重绘 1 个模块
如果我m.module
的页面上有 10 个,我可以调用m.startComputation
, m.endComputation
,m.redraw
还是m.request
只调用其中一个模块?
看起来这些中的任何一个都会重绘我的所有模块。
我知道只会module 1
受到一些代码的影响,我只希望秘银重绘它。
mithril.js - 无法让 m.request 自动转换为 Mithril 中的类
我已经定义了一个类,并要求m.request
将 Web 服务的 JSON 响应投射到它,但是每个类属性都等于n/b()
,并且我的视图将每个属性呈现为function (){return arguments.length&&(a=arguments[0]),a}
.
如果我不尝试在 m.request 中将 JSON 响应自动转换为我的类,那么我的视图呈现得很好,我认为这告诉我 Web 服务返回的 JSON 对象是有效的 JSON。
我想用我的课。怎么了?
以下是 Web 服务返回的 JSON 的编辑示例:
这是我的秘银应用程序:
javascript - 秘银你好世界 MVC 示例不起作用
我无法让 Mithril hello world MVC 示例正常工作。
这是我的代码,从Mitrhil homepage复制而来。请注意,我所做的唯一更改是将m.request({method: "GET", url: "pages.json"});
方法调用交换为手动生成的 pages 对象。
如您所见,我上面在jsFiddle中的示例不起作用,但另一个 Mitrhil 示例,待办事项应用程序jsFiddle可以正常工作。
我认为基本的 MVC Mitrhil 示例可以像 Todo 应用程序那样简单地工作,并且可能链接到 jsFiddle 或 CodePen 示例供用户分叉,类似于 React。
node.js - node.js googleapis 库找不到模块'/node_modules/googleapis/apis/youtube/v3'
我正在使用官方的 Google API node.js 库来获取 YouTube 用户信息。我已经在另一个项目中正常工作了,但由于某种原因,我在这个项目中遇到了一个奇怪的错误。目标是获取范围为特定播放列表 ID 的视频列表。
我正在使用 Mithril.js 和咖啡脚本。这是相关的片段:
谷歌客户端加载正常,但在这一行:
我收到以下错误:
未捕获的错误:无法加载端点 youtube(“v3”):找不到模块'/node_modules/googleapis/apis/youtube/v3'
我在相邻目录的同一台计算机上的另一个项目中使用了完全相同的代码。他们都使用相同版本的 googleapis(我将工作文件夹复制到这个项目只是为了更加确定)。
我尝试使用其他一些客户端端点来执行此操作,例如使用示例。它们都不起作用。所以它一定是某种路径变量?
javascript - 编译导入其他 js 文件的 LiveScript
我可能误解了 LiveScript 的工作原理,但是我应该如何在 .ls 文件中导入另一个 js 文件并使其编译?例如,我想访问 DOM 文档,例如:
并加载 mithril.js(在同一个本地目录中):
但是当像这样编译时:
这目前告诉我它找不到“文档”或任何其他秘银特定变量(例如“m”)。