2013-10-11 4 views
4

Я не могу использовать путевые точки с RequireJS, хотя все выглядит хорошо. Вот мой код: http://jsfiddle.net/7nGzj/RequireJS + Путевые точки: Object [object Object] не имеет метода «waypoint»

main.js

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

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

Я даже shimed его, чтобы убедиться, JQuery правильно загружена, но это Безразлично» т работы. Мои другие библиотеки работают так, как они должны (responsiveslides, flexslider, hoverintent, smoothscroll, ..).

  • JQuery 1.10.2
  • Waypoints v2.0.3
  • RequireJS V2.1.8

ответ

7

зависимости, которые AMD-совместимый (и путевые точки) должен быть require D с помощью их зарегистрированного имени модуля , Самый простой (? Единственный) способ узнать, что это имя является заглянуть в исходный код библитеками:

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

Это «waypoints»!

Поскольку библиотеки AMD-совместит, не нужна подкладка, но вам необходимо определить путь к нему (так как имя файла может отличаться от имени модуля AMD):

requirejs.config({ 
    "baseUrl": "theme/PereOlive/js/lib", 
    "paths": { 
     "app": "../app", 
     "waypoints": "path/to/waypoints.min" 
    } 
}); 

После выполнения этого вам необходимо изменить вам require вызов:

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

Fixed ваш jsfiddle: http://jsfiddle.net/jVdSk/2/

+0

Спасибо большое! Я искал часы, чтобы заставить его работать. – user2160458

+1

Спасибо! Откуда вы это узнали? – Tim

Смежные вопросы