2015-08-11 16 views
8

W moim kodzie test.js jest zależny od jquery-ui, który nie używa wymaga wzoru AMD i testu.spec.js zależącego od jquery-ui, test.js który używa AMD wzór. Czy możemy ładować zależność jquery-ui w pliku test.js dynamicznie, gdy uruchamiamy test.spec.js.wymagają użycia wzorca AMD daje błąd dla zdarzeń jQuery UI

require.config({ 

    baseUrl: '/demo', 

    paths: { 
     'jquery': '../library/jquery-1.11.1', 
     'jquery-ui': '../library/jquery-ui-1.11.4' 
    }, 
    shim: { 
     'jquery': { 
      exports: 'jQuery' 
     }, 
     'jquery-ui': { 
      deps: ['jquery'] 
     }, 
     'library/src/js/test': { 
      deps: ['library/jquery-1.11.1', 'library/jquery-ui-1.11.4', '../js/collapse'], 
      exports: 'Test' 
     } 
    }, 
    callback: window.__karma__.start 
}); 

W teście test.js jest zapisywany "przeciągalny" z zdarzenia przeciągalnego jquery-ui. po dokonaniu oceny $('#panelId').draggable({revert: true}); dostał błąd

"TypeError: 'undefined' is not a function (evaluating '$('#panelId').draggable({revert: true})')"

Jak załadować jQuery UI test.js w require.config. Ponieważ używam tego do uruchamiania testów jaśminowych. W rzeczywistym środowisku działa zgodnie z oczekiwaniami, ale w jaśminowym przypadku testowym nie można znaleźć zdarzenia jquery-ui. test.js nie używa require.js, ale test.spec.js używa wymaganego wzorca AMD.

w test.spec.js kodu po wykonaniu tego dostaje błąd jquery-ui Draggable nieokreślonej

define(['jquery-ui','library/src/js/test'], function ($) { 

}); 

jestem w stanie uzyskać dostęp do jQuery UI w test.spec.js użyciu $, a nie w test.js gdzie zdarzenie jquery-ui jest napisane jako test.js nie używa wzorca wymaganego przez AMD. Nie wiem, czego brakuje. każda pomoc będzie aprobowana ... :)

+0

Czy u tworzyć jsfiddle z kodem? – venkat7668

+0

@ venkat7668 w bibliotece/src/js/test używam odwołania do jquery-ui, które nie wymaga require.js, podczas ładowania dependecy wykonuje plik library/src/js/test i zgłasza niezdefiniowany błąd zdarzenia jquery-ui. –

+1

Masz na myśli, że 'library/src/js/test.js' nie jest modułem AMD? – tonyjmnz

Odpowiedz

3

Spróbuj aktualizowane wymagają js config

Use "library/src/js/test", aby załadować testu

require.config({ 

    baseUrl: '/demo', 

    paths: { 

     'jquery': '../library/jquery-1.11.1', // assuming this is a correct path 
     'jquery-ui': '../library/jquery-ui-1.11.4' // assuming this is a correct path 
    }, 
    shim: { 
     'jquery': { 
      exports: 'jQuery' 
     }, 
     'jquery-ui': { 
      deps: ['jquery'] 
     }, 
     'library/src/js/test': { 
      deps: ['jquery', 'jquery-ui', '../js/collapse'], // changes done here 
      exports: 'Test' 
     } 
    }, 
    callback: window.__karma__.start 
}); 
+0

Próbowałem tego podejścia, ale sam test.js ma zależność od jquery-ui, podczas gdy ja uzyskuję odwołanie do jquery-ui w test.spec.js. test.js nie używa wzorca/wymagania AMD. –

+0

Jeśli więc plik test.spec.js nie jest wymagany, to w jaki sposób ładujesz wymagane zależności dla pliku test.spec.js? – Kushal

+0

test.spec.js używa wymagać, ale test.js nie wymaga. –

0

Musisz użyć jquery-ui zamiast ścieżki do pliku.

shim:{ 
    'jquery': { 
      exports: 'jQuery' 
      }, 
    'jquery-ui': { 
      deps: ['jquery'] 
     } 
} 

define(['jquery-ui','library/src/js/test'], function ($, test) { 
    //code goes here 
}); 
+0

Próbowałem tego podejścia nie działa mate ... Daje błąd Błąd: Błąd skryptu dla: jquery-ui http://requirejs.org/docs/errors.html#scripterror –

+0

I zaktualizowany, spróbuj raz – venkat7668

+0

przeciągane zdarzenie jest niezdefiniowanym błędem jest zgłaszany –