Ich habe ein wenig Probleme, sammyjs dazu zu bringen, mit requirejs zu funktionieren. Der Aufruf von $.sammy
schlägt fehl und der Fehler besagt, dass sammy im jQuery-Namespace nicht definiert ist.
Hier ist meine require-Konfiguration
require.config
baseUrl: '/Scripts'
waitSeconds: 10
paths:
bootstrap: './lib/bootstrap/bootstrap'
domReady: './lib/domReady/domReady'
knockout: './lib/knockout/knockout-2.2.1.debug'
jquery: './lib/jquery/jquery-1.9.1'
sammy: './lib/sammy/sammy-0.7.4'
myPage: './app/pages/myPage'
myViewModel: './app/viewModels/myViewModel'
shim:
bootstrap:
deps: ["jquery"]
sammy:
deps: ["jquery"]
exports: "Sammy"
Hier ist mein Seiten-Javascript
require ['knockout', 'myViewModel', 'domReady!' ], ( ko, viewModel ) ->
myViewModel = new viewModel
ko.applyBindings( myViewModel )
Hier ist mein ViewModel
define [ 'jquery', 'sammy', 'knockout' ], ( $, sammy, ko ) ->
class myViewModel
constructor: ( options ) ->
self = @
@sammypath = ko.observable( 1 )
@router = $.sammy( ->
@get '#/', ( data ) ->
self.sammypath( 1 )
)
@router.run()
Allerdings erhalte ich einen Fehler, wenn ich versuche, $.sammy
aufzurufen
Uncaught TypeError: Object function ( selector, context )
{ // The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery ); }
hat keine Methode 'sammy'
Ich vermute, dass etwas mit der require.config
nicht stimmt, bin aber ehrlich gesagt nicht sicher.
Die Datei sammy-0.7.4.js
wird heruntergeladen.
Das sammy, das im define im ViewModel übergeben wird, ist nicht null
Ich habe einen Breakpoint in die sammy-Datei gesetzt und er wird getroffen und erkennt, dass es sich um ein AMD-Modul handelt. Ich bin mir nur nicht sicher, warum es sich nicht dem jQuery-Namespace hinzufügt.
Ich habe auch überprüft, ob die Seite korrekt geladen wurde, aber das domReady-Modul kümmert sich darum.
Ich benutze auch Coffeescript, aber ich denke nicht, dass das ein Problem sein sollte.