2015-09-23 13 views
8

Używam maszynopisu z AngularJS. Mam problem z modaliami przy użyciu wpisanej definicji biblioteki jQuery. Pojawia się następujący błąd: "błąd TS2339: właściwość" modalny "nie istnieje dla typu" JQuery "."error TS2339: Property "modal" nie istnieje w typie "JQuery"

Wersja: biblioteka jQuery w wersji 1.10.x/2.0.x Definicje: https://github.com/borisyankov/DefinitelyTyped

Kod

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

mam odniesienie do jquery.d.ts w angular.d.ts

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

i My plik referencyjny globalnego dostawcy wygląda następująco:

<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

można pokazać swój kod? –

+0

$ scope.delete = funkcja (id) { Photo.get ({id: id}, funkcja (wynik) { $ scope.photo = result; $ ('# deletePhotoConfirmation'). Modal ('show') ; // linia błędu }); }; – TomekB

+0

Odwołuję się do "jquery.d.ts" w pliku "angular.d.ts": /// i mój plik referencyjny dostawcy globalnego wygląda tak: /// <ścieżka referencyjna = '../vendor/types/angle/angle.d.doc "/> /// <ścieżka referencyjna =' ../vendor/types/kątowe/kątowe-mocks. d.ts '/> /// <ścieżka referencyjna =' ../vendor/types/jasmine/jasmine.d.ts '/> – TomekB

Odpowiedz

9

Twój problem jest spowodowany brakiem nieruchomości o nazwie modal w pliku jquery.d.ts.

Jeżeli jesteś pewien, że ta praca w czystym JS można oszukać przy tym tak

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

Można także znaleźć dodatkowe d.ts plik, w którym ta opcja została już zdefiniowana.

Spróbuj rozważyć this bibliotekę, która ma już modal opcję

Powodzenia!

+1

Sprawdziłem "jquery.simplemodal.d.ts". Działa dobrze, dzięki! – TomekB

+1

zaznacz pytanie jako poprawną odpowiedź, jeśli to pomaga –

22

z nowszych wersji maszynopisu (> v2 wierzę):

npm install -D @types/bootstrap 
+0

To działało dla mnie w projekcie z zainstalowanymi typami jquery - dodano do interfejsu jQuery takie, że '$ (modalny-selektor) .modal ('show')' etc compiles grzywny – hughjdavey

+6

Musiałem również dodać 'import * jako bootstrap z" bootstrap ";' do mojego 'app.module.ts' inaczej IntelliJ przestał narzekać, ale nadal nie skompilowałby się w wierszu poleceń z tym samym błędem. Nie ma znaczenia, jak to nazwiesz (nie musi to być bootstrap). Dla całkowitej przejrzystości mam również 'import * as $ from" jquery ";' w tym samym pliku, który pozwala mi używać '$ (...)' w moich komponentach. – hughjdavey

+1

dziękuję @hughjdavey !!! do włączenia tych konkretnych oświadczeń importowych ... nie mogę uwierzyć, jak niejasne jest to, jak powszechna jest potrzeba?!? – Beej

Powiązane problemy