Månedlige Arkiver: Februar 2015

Feilsøking tips For kantete direktiver (Eller, Lære å elske bindestreker Over igjen)

Jeg har et par apps som gjør $http.get() samtaler og jeg ønsket å kunne vise en pent formatert feilmelding med stygge feildetaljer skjult, men tilgjengelig.  I utgangspunktet, Dette:

image

Og hvis du klikker feil, de ser mer informasjon:

image

Enkle ting.  Siden nøyaktig samme potensielle feil kan vises i skjermbildet administrative som sluttbrukeren skjermen, det tydelig kalt for en egendefinert kantete direktivet.  JEG  fant dette enestående serien artikler (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) av stort Dan Wahlin.  Etter hans råd, Jeg raskt opprettet en <Hei, verden> direktivet og gått videre min mer komplekse feil skjerm nal. Jeg løp inn litt problemer med mer komplekse direktivet.  Lykkelig, slags tilfeldigvis, Jeg hadde fortalt WebStorm (redaktøren jeg bruker disse dager) at JS filen var en kantete fil og det hjalp meg finne ut problemet.  Dette er koden for direktivet selv:

Angular.Module("CDLApp").direktivet("generalCdlErrorHandler", funksjonen() {

avkastning {
begrense: "E",
Erstatt: sann,

omfang: {
retrieveLastConfigurationError: "&"
},

mal:
'<div class = "varsle varsel-fare" rolle = "varsle" ng-init = "doShowExpandedErrorDetails = true" ng-show = "retrieveLastConfigurationError()">' +
"Det var en jeg/o feil eller annen feil. Dette skjer vanligvis fordi konfigurasjonsfilen data ikke kunne ' +
"funnet eller konfigurasjonsfilen inneholder unøyaktig informasjon (som refererer til et dokumentbibliotek ' +
"det finnes ikke).' +
' <br />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <et href = "#" NG-klikk = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klikk her for å skjule detaljer." +
' </en>: ' +
' <br />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <br />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <et href = "#" NG-klikk = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klikk her for å vise informasjon om feilen." +
' </en>' +
' </div>' +
'</div>'
};
});

I utgangspunktet, Jeg oppretter et nytt element kalt en "generalCdlErrorHandler".  Trenger en funksjon kalt retrieveLastConfigurationError og som håndteres i omfang-objektet.  Jeg kunne sannsynligvis ha bare brukt det overordnede området, men som føles lat.  Hvis noen tror burde jeg ha gjort det, Jeg ville elske å høre om det i kommentarfeltet.

Dette var alle fin, men jeg får ikke noe.  Ingen feil dukket opp i konsollen (minst én gang fast jeg alle sx feil jeg opprettet underveis).  Jeg bare fikk noen utdata fra direktivet.  Jeg gikk og lagt noen statisk tekst før direktivet ng-show og jeg * har * komme som. Dette gjorde meg til å tenke at kanskje direktivet ikke lov implisitt opprette nye vars som "doShowExpandedErrorDetails" eller har en "ng-init" der inne. 

Jeg gikk tilbake til HTML for å se hvis jeg hadde en type og denne gangen WebStorm hjalp meg ut.  Jeg hadde passert i funksjonen retrieveLastConfigurationError som dette:

<Generelt-cdl-feil-behandleren retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Generelt-cdl-feil-behandleren>

Men det virkelig nødvendig å være dette:

<Generelt-cdl-feil-behandleren hente-siste-konfigurasjon-error = "CDLController.retrieveLastConfigurationError()">
</Generelt-cdl-feil-behandleren>

WebStorm var smart nok å vite at det måtte være bindestrek.  Hvis det ikke hadde gitt det hintet, Jeg ville trolig være fortsatt feilsøking dette Smil.  Moro ganger!

Trikset er dette: ikke bare er direktiv elementnavnet bindestrek, så er alle attributter du legge til.  Når jeg lagt bindestreker, alt fungerte bra.  Dan tutorial kom til å bruke korte enkelt navn, så jeg ikke gjorde tilkoblingen.

Håpe dette hjelper noen.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

IE9 Ikke liker det når du tar en snarvei med din <utstrekningen> Tags

Jeg har falt i en dårlig vane av benytter Chrome hele tiden.  Det er "dårlig" fordi ting jeg utvikle virkelig trenger å kjøre på en rekke andre weblesere, inkludert, Dessverre IE8.  Bærbare arbeidsdatamaskinen har IE9 standard uansett grunn) og jeg bare gjorde en rask se hvilke ting så som og... det var ikke pen.  For eksempel:

image

Har * skal * å se slik ut:

image

 

Ikke bare var det av, men min klikkhendelser ikke var skyting.  (De fleste av dem, Allikevel).

Visuelt, det så ut som ting begynte å gå av skinnene nær koblingen "Avansert Setup".  Jeg gravde i den delen av HTML og funnet at jeg hadde denne linjen:

<span class = "glyphicon glyphicon-nytt vindu" />

Det virker som tillatte syntaks ("Chrome versjon 40.02214.94 m"er fin med det.). Jeg gikk og endret det likevel, som vist:

<span class = "glyphicon glyphicon-nytt vindu"></utstrekningen>

Som bestemt den.

Slike en liten liten ting forårsaket slikt stort rot av en skjerm.  Moro ganger.

Denne skjedd å være en rask Fiks, men det er også typen ting som bare blir ryggraden justert når du ser den.  Det er over 500 linjer med HTML i denne lille admin-funksjonen, og du ønsker bare ikke å finne deg selv grave blant de ugress, noensinne Smil.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin