如何向Durandal添加自定义javascript函数
我目前正在使用Durandal框架构建一个简单的站点(这是我第一次使用Durandal),对于如何添加一个简单的javascript函数,我有一个疑问。我想在加载DOM后调用该函数,但不确定如何将其附加到当前viewmodel。我遇到的问题是,在加载DOM之前调用函数,并且尚未创建div ID,在本例中是“sb search” 然后,我尝试将该函数添加到viewmodel:如何向Durandal添加自定义javascript函数,javascript,durandal,Javascript,Durandal,我目前正在使用Durandal框架构建一个简单的站点(这是我第一次使用Durandal),对于如何添加一个简单的javascript函数,我有一个疑问。我想在加载DOM后调用该函数,但不确定如何将其附加到当前viewmodel。我遇到的问题是,在加载DOM之前调用函数,并且尚未创建div ID,在本例中是“sb search” 然后,我尝试将该函数添加到viewmodel: define(["plugins/router"], function (router) { var vm = {
define(["plugins/router"], function (router) {
var vm = {
viewAttached: viewAttached
};
return {
router: router
};
function attached() {
new UISearch(document.getElementById('sb-search'));
}
return vm;
});
但是,没有用
任何帮助都将不胜感激。即使是关于如何“document.write('Hello World')”的简单教程也会有所帮助。谢谢 这没有严格的关系,但我想补充一下评论中所说的:您很可能不应该在所附的
处理程序中扫描全局文档。当调用它时,组合视图本身可能还没有组合/连接,一般来说,最好不要对全局状态进行假设。此外,您还可以通过不扫描整个DOM来获得性能
调用附加的时。使用它来限制搜索。如果它位于子视图/合成视图中,请使用compositionComplete
处理程序,在所有合成完成后调用(事件“起泡”)。如果它位于父视图中,请使用传递给这些函数的第二个参数。如果真的听起来太复杂,请考虑你的设计本身可能有缺陷,寻找MVVM指导。
完整性:
评论提到
- 您必须导出正确的功能(
附加的
!=查看附加的
)
- 如果您确实打算定义Durandal调用的
attached
处理程序,请知道viewAttached
不赞成使用attached
- 我还想补充一点,在返回
vm
(查看模型)之前,返回一个包含router
属性的匿名对象,尽管这可能是您所做的一些测试遗留下来的,并且错误地复制粘贴在这里
你的函数和你用来显示它的对象不匹配。是的,编辑{viewAttached:viewAttached}到{viewAttached:attached}@JamieHammond,尽管他很可能真的想定义Durandalattached
处理程序,所以@Craiger,让那vm={attached:attached}
@tne这就是我们要表达的观点……我在回答大多数问题时遇到的问题是,人们没有指定Durandal的版本-我认为很多人仍然在使用John Papa的热毛巾模板,这是1.x版本,考虑到2.0带来的巨大变化,该版本现在有点过时了。如果文档可以更详细地介绍附件,那就太好了,因为我看到了很多关于这个主题的问题。