2013-03-03 5 views
5

Ich versuche requirejs zu verwenden knockoutjs in folgenden Weise zu laden:ko ist nicht mit requirejs definiert

<script type="text/javascript"> 
    require(['scripts/knockout-2.2.1.debug'], function() { 
     var someModel = { 
      firstname: ko.observable('asd') 
     }; 
     ko.applyBindings(someModel); 
    }); 
</script> 

Wo require.js geladen wird einen Skript-Tag auf der Oberseite mit. Wenn dieser Code ausgeführt wird, bekomme ich einen ko ist nicht definiert Fehler. Was ist der richtige Weg, um Ähnliches zu tun?

+2

wie etwa 'Funktion (ko) {.....' – HungryCoder

+0

Dank HungryCoder .. Es wird das Problem behoben. Leider kann ich einen Kommentar nicht als Antwort markieren, aber es ist. – helloworld

+0

Nur neugierig - was ist die Logik darunter? Wenn ich 4 Bibliotheken in "require" einfüge, muss ich 4 Parameter hinzufügen, um sie zu verwenden? Auch, wenn ich nur 2 Skript-Tags auf der Seite - eine für requirejs und andere für knockoutjs (in der gleichen Reihenfolge und keinen anderen Code auf der Seite) enthält, wird Fehler ausgelöst. Ist es, dass nur durch das Hinzufügen von requirjs Konflikte mit anderen folgenden Skript-Tags auftreten? Mein Problem ist gelöst, aber großartig, wenn jemand meine Verwirrung klären kann. – helloworld

Antwort

5
require(['scripts/knockout-2.2.1.debug'], function(ko) { 

Ich bin nicht sicher, aber das Beispiel auf requirejs sehen, ich denke, diese in den Anwendungsbereich dieser Callback-Funktion geladen werden. Also, wenn Sie das nicht in Ihrer Funktion akzeptieren, können Sie es nicht verwenden.

Ja, Sie haben Recht (zumindest, ihre Exaple zu sehen). Wenn Sie 4 Bibliotheken einschließen, müssen Sie 4 Parameter akzeptieren. zum Beispiel, wenn Sie jquery und Knockout geladen, können Sie es wie folgt schreiben:

require(['scripts/jquery.js', 'scripts/knockout-2.2.1.debug'], function($, ko) {