2013-03-03 3 views
5

Я пытаюсь использовать requirejs для загрузки knockoutjs следующим способом:ко не определена с requirejs

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

Где require.js загружается с помощью тега сценария на вершине. Когда этот код выполняется, я получаю ko, а не ошибку. Каков правильный способ сделать подобное?

+2

как о 'функции (ко) {.....' – HungryCoder

+0

Спасибо HungryCoder .. Это решает проблему. К сожалению, я не могу отметить комментарий как ответ, но это так. – helloworld

+0

Просто любопытно - какова логика внизу? Если я включу 4 библиотеки в запрос, мне придется добавить 4 параметра для их использования? Кроме того, если я просто включаю 2 тега сценария на страницу - один для requirejs и другой для knockoutjs (в том же порядке и без другого кода на странице), он выдает ошибку. Является ли это просто добавлением requirejs, он конфликтует с другими тегами скриптов? Моя проблема решена, но отлично, если кто-то может очистить мое замешательство. – helloworld

ответ

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

Я не уверен, но, видя пример на requirejs, я предполагаю, что они загружаются в сферу действия этой функции обратного вызова. Поэтому, если вы не принимаете это в своей функции, вы не можете его использовать.

Да, вы правы (по крайней мере, видя их exmaple). если вы включаете 4 библиотеки, вам необходимо принять 4 параметра. например, если вы загрузили JQuery и нокаута, вы можете записать его следующим образом:

require(['scripts/jquery.js', 'scripts/knockout-2.2.1.debug'], function($, ko) { 
Смежные вопросы