2016-07-06 1 views
0

Durandal 페이지에서 fancytree를 사용하려고합니다. 나는 전에 이것을 해 봤지만 지금은 효과가없는 것 같아서 화를 내고있다.javascript 오류는 "함수가 아닙니다 ..."하지만 라이브러리가로드되었습니다.

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

를 그리고 아직 게재가 더 "fancytree"프로토 타입 방법이 없습니다 :

내가 $("#tree").fancytree... 라인과 코드가 중지 시점에서 JS 디버그 정지 지점이, 나는 다음과 같은 세 가지 라이브러리를로드 한 요소와 나는 초기화 라인에 system.js:109 TypeError: $(...).fancytree is not a function(…)을 얻는다. 과거에는 이것이 부족한 jquery-ui 라이브러리로 인해 발생했지만 분명히 여기에로드되어 있습니다.

내가 무엇을 놓치고 있습니까?

추가 정보를 편집하려면 편집하십시오. 나는 나의 디버그 정지 점을 넣어

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}; 
      } 
     }); 

    } 

을 : 그냥

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

에 포함 된 첨부 뷰 모델이이 같은

HTML은 크게 관련이 없다 $("#tree").fancytree({ 줄을 작성한 다음 위에서 언급 한 라이브러리를로드했습니다.

편집 2 : Curiouser and curiouser ... 더 많은 디버깅을 해왔습니다. 나는 jquery.fancytree.js 라이브러리 안에 stop point를 두었고 코드 실행은 거기에 들어간다! 게다가, 실제로는 element.fancytree 메소드가 필요하며, 디버깅 중에 오랫동안 엘리먼트에 붙어 있습니다. 문제는 jquery 초기화에서 나중에 요소에서 .fancytree() 메서드를 제거하고 코드 실행이 jquery 라이브러리에서 다시 시작되기 전에 발생합니다.

동일한 jquery, jquery-ui 및 jquery.fancytree 라이브러리를로드하는 다른 테스트 HTML 페이지가 있는데 제대로 작동합니다. 분명히 Durandal과 관련이 있어야합니다.

+0

당신도 전체 HTML을 공유 할 수 있습니까 ?? –

+0

아니요,하지만 관련 부분을 추가했습니다. – TheMook

+0

어떤 멋진 트리 버전을 사용하고 있습니까? 작동하는 2.10.2를 사용한 예제를 발견했습니다. https://jsfiddle.net/robertrozas/vnj4cpza/2/ – forgivenson

답변

1

해결! jquery를 다시로드해야하는 requirejs와 관련이 있습니다. 내 require.js.config({...}); 섹션 후와 define(['knockout', 'durandal/system', ... { 섹션 전에 ...

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

: 난 그냥 추가 Make requireJs not reload jQuery if already on page

:이 질문에 대한 답을 발견했다.

믿을 수 없다 ...

관련 문제