2013-10-11 3 views
4

모든 것이 좋지만 Waypoint를 RequireJS와 함께 사용할 수 없습니다. 다음은 내 코드입니다 : http://jsfiddle.net/7nGzj/RequireJS + Waypoints : Object [object Object]에 'waypoint'메서드가 없습니다.

main.js 심지어 jQuery를 제대로로드되었는지 확인하는 데 shimed

define([ 
    'jquery', 
    "waypoints.min", 
], function() { 
    $(function() { 
     console.log($.waypoints); 
     $('#loading').waypoint(function (direction) { 
      // do stuff 
     }); 
    }); 
}); 

requirejs.config({ 
    "baseUrl": "theme/PereOlive/js/lib", 
    "paths": { 
     "app":"../app", 
     "jquery": "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min" 
    }, 
    "shim": { 
     "waypoints.min": ["jquery"] 
    } 
}); 
requirejs(["app/common"]); 

common.js를하지만 '아무튼 일하지 마라. 내 다른 라이브러리는 (responsiveslides, flexslider, hoverintent, smoothscroll 등)해야하는 것처럼 작동합니다.

  • jQuery를 V1.10.2
  • 경유지 V2.0.3
  • RequireJS
  • 의 추가 v2.1.8 AMD 호환 (및 중간 점이다)이다

답변

7

종속 등록 된 모듈 이름을 통해 require D이어야 . 그 이름이 무엇인지 찾는 가장 쉬운 (? 전용) 방법은 LIB의 소스 코드로 볼 수 있습니다 :

// (...) 
if (typeof define === 'function' && define.amd) { 
    return define('waypoints', ['jquery'], function($) { 
    return factory($, root); 
    }); 
} // (...) 

그것은 "waypoints"입니다!

requirejs.config({ 
    "baseUrl": "theme/PereOlive/js/lib", 
    "paths": { 
     "app": "../app", 
     "waypoints": "path/to/waypoints.min" 
    } 
}); 
: 라이브러리 이후

당신이 심을 필요는 없지만 (파일 이름은 AMD 모듈 이름과 다를 수 있기 때문에) 당신이 그것에 경로를 정의해야합니다, AMD-있는 Compatibile입니다

define([ 
    "jquery", 
    "waypoints" // this is the AMD module name 
] 

고정하여 jsfiddle : http://jsfiddle.net/jVdSk/2/

,691을

그 일을 한 후, 당신은 당신에게 require 전화를 변경해야합니다

+0

고마워요! 나는 그것이 작동하도록 몇 시간을 찾고 있었다. – user2160458

+1

감사합니다. 이걸 어디서 배웠 니? – Tim