2015-08-11 10 views
8

Nel mio codice test.js dipende da jquery-ui che non utilizza il modello AMD e test.spec.js dipende da jquery-ui, test.js che utilizza AMD modello. Possiamo caricare dinamicamente la dipendenza di jquery-ui in test.js durante l'esecuzione di test.spec.js.richiedono l'uso di un pattern AMD genera errori per eventi dell'interfaccia utente jQuery

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 
}); 

In test.js "trascinabile" dell'evento trascinabile jquery-ui viene scritto. dopo aver valutato $('#panelId').draggable({revert: true}); ottenuto l'errore

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

Come caricare jquery-ui per test.js in require.config. Come sto usando questo per eseguire i miei casi di test al gelsomino. In ambiente reale funziona come previsto, ma nel caso del test del gelsomino non è possibile trovare l'evento jquery-ui. test.js non utilizza require.js, ma test.spec.js utilizza il modello AMD richiesto.

in test.spec.js codice dopo l'esecuzione di questo ha ricevuto l'errore di jquery-ui trascinabili indefinito

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

}); 

sono in grado di accedere a jQuery UI in test.spec.js utilizzando $, non in test.js dove jquery-ui è scritto come test.js non usa AMD richiede pattern. Non so cosa manca. qualsiasi aiuto sarà appagato ... :)

+0

Can u creare jsfiddle con il tuo codice? – venkat7668

+0

@ venkat7668 in libreria/src/js/test sto usando il riferimento jquery-ui che non usa require.js, mentre carico dipendenza eseguo libreria/src/js/test file e genera un errore non definito dell'evento jquery-ui. –

+1

Quindi vuoi dire che 'library/src/js/test.js' non è un modulo AMD? – tonyjmnz

risposta

3

Prova questa aggiornato richiede config js

Usa "biblioteca/src/js/test" per caricare il test

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

avevo provato questo approccio ma test.js stesso ha dipendenza su jquery-ui, mentre sto ottenendo riferimento jquery-ui in test.spec.js. test.js non utilizza il pattern/richiesta AMD. –

+0

Quindi se test.spec.js non sta usando richiede allora come stai caricando le dipendenze richieste per il tuo test.spec.js? – Kushal

+0

test.spec.js utilizza require ma test.js non utilizza require. –

0

È necessario utilizzare jquery-ui anziché il percorso del file.

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

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

Ho provato questo approccio non funzionante ... Dà errore Errore: Errore di script per: jquery-ui http://requirejs.org/docs/errors.html#scripterror –

+0

I aggiornato, prova questa volta – venkat7668

+0

evento trascinabile non definito errore è stato generato –

Problemi correlati