2015-09-23 24 views
8

Sto utilizzando Typescript con AngularJS. Ho un problema con le modali usando la definizione tipizzata della libreria jQuery. Viene visualizzato il seguente errore: 'errore TS2339: la proprietà' modale 'non esiste sul tipo' JQuery '.'TS2339: la proprietà 'modale' non esiste sul tipo 'JQuery'

Versione: libreria jQuery, versione 1.10.x/2.0.x Definizioni: https://github.com/borisyankov/DefinitelyTyped

Codice

$scope.delete = function (id) { 
    Photo.get({id: id}, function(result) { 
    $scope.photo = result; 
    $('#deletePhotoConfirmation').modal('show');// error line 
    }); 
}; 

sto riferimento a jquery.d.ts in angular.d.ts

<reference path="../jquery/jquery.d.ts" /> 

e la mia file di riferimento fornitore globale assomiglia a:

<reference path='../vendor/types/angular/angular.d.ts' /> 
<reference path='../vendor/types/angular/angular-mocks.d.ts' /> 
<reference path='../vendor/types/jasmine/jasmine.d.ts' /> 
+2

può mostrare il codice? –

+0

$ scope.delete = function (id) { Photo.get ({id: id}, funzione (risultato) { $ scope.photo = risultato; $ ('# deletePhotoConfirmation'). Modal ('mostra') ; // error line }); }; – TomekB

+0

Mi riferisco a "jquery.d.ts" nel file "angular.d.ts": /// e al mio file di riferimento del fornitore globale assomiglia a: /// /// /// TomekB

risposta

9

Il problema è causato dalla mancanza di proprietà con nome modal nel file jquery.d.ts.

Se sei sicuro che questo lavoro in JS puri si può ingannare con esso come questo

$scope.delete = function (id) { 
    Photo.get({id: id}, function(result) { 
    $scope.photo = result; 
    (<any>$('#deletePhotoConfirmation')).modal('show'); 
    }); 
}; 

Inoltre, puoi trovare le ultime file di d.ts in cui è già stato definito questa opzione.

Prova a prendere in considerazione this libreria che ha già avuto modal opzione

Good Luck!

+1

Ho controllato 'jquery.simplemodal.d.ts'. Funziona bene, grazie! – TomekB

+1

contrassegna la domanda come risposta corretta se ti aiuta –

22

con le versioni più recenti del dattiloscritto (> v2 credo):

npm install -D @types/bootstrap 
+0

Questo ha funzionato per me in un progetto con tipi jquery installati anche - aggiunto all'interfaccia jQuery tale che '$ (modal-selector) .modal ('mostra')' etc compila fine – hughjdavey

+6

Ho anche dovuto aggiungere "import * come bootstrap da" bootstrap ";' al mio 'app.module.ts' altrimenti IntelliJ ha smesso di lamentarsi ma non si sarebbe ancora compilato sulla riga di comando con lo stesso errore. Non importa come lo chiami (non deve essere bootstrap). Per chiarezza assoluta, ho anche "import * as $ da" jquery ";' nello stesso file che mi permette di usare '$ (...)' nei miei componenti. – hughjdavey

+1

grazie @hughjdavey !!! per includere quelle specifiche dichiarazioni di importazione ... non posso credere a quanto sia oscuro per quanto sia comune a un bisogno che deve essere?!? – Beej

Problemi correlati