gpt4 book ai didi

javascript 错误 "is not a function..."但已加载库

转载 作者:行者123 更新时间:2023-12-03 06:35:48 25 4
gpt4 key购买 nike

我正在尝试在 Durandal 页面中使用 fancytree。我以前这样做过,但现在似乎无法正常工作,这让我发疯。

我在 $("#tree").fancytree... 行上有一个 js 调试停止点,在代码停止点,我加载了以下三个库:

jquery-1.12.1.js    
jquery-ui-1.11.4.js
jquery.fancytree.js

然而,该元素没有显示“fancytree”原型(prototype)方法,我得到 system.js:109 TypeError: $(...).fancytree is not a function(...)初始化线。过去这是由于缺少 jquery-ui 库引起的,但显然这里已加载该库。

请问我缺少什么?

已编辑以添加更多信息。

HTML 基本上是无关紧要的,因为它只是具有

<div id="tree"></div>

有一个附加的 View 模型,其中包含:

    self.attached = function (vw, prt) {
buildTree(vw);
}

    function buildTree(view) {
// Initialize Fancytree
$("#tree").fancytree({
checkbox: true,
selectMode: 2,
source: {url: "testdata/ajax-tree-taxonomy.json", debugDelay: 1000},
toggleEffect: { effect: "drop", options: {direction: "left"}, duration: 400 },
lazyLoad: function(event, data) {
data.result = {url: "testdata/ajax-sub2.json", debugDelay: 1000};
}
});

}

我将调试停止点放在 $("#tree").fancytree({ 行,然后它已经加载了上面提到的库。

编辑2:越来越好奇......我一直在做更多的调试。我在 jquery.fancytree.js 库中放置了一个停止点,代码执行就在那里!更重要的是,它实际上创建了所需的 element.fancytree 方法,并且在调试过程中长时间保持附加到元素。问题是,在 jquery 初始化稍后会发生一些事情,从元素中删除 .fancytree() 方法,然后在代码执行从 jquery 库中返回之前!

我有另一个测试 html 页面,它加载完全相同的 jquery、jquery-ui 和 jquery.fancytree 库,并且工作得很好。那肯定和 Durandal 有关吧?

最佳答案

修好了!这与 requirejs 重新加载 jquery 有关。我找到了这个问题的答案:Make requireJs not reload jQuery if already on page

我刚刚添加:

define('jquery', [], function () {
return jQuery;
});

...在我的 require.js.config({...}); 部分之后和 define(['knockout', 'durandal/system', .. .{ 部分。

不敢相信这么简单......

关于javascript 错误 "is not a function..."但已加载库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38221616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com