maandelijkse archieven: Februari 2015

Oplossen van problemen Tip voor hoekige richtlijnen (Of, Leren om te houden van afbreekstreepjes helemaal opnieuw)

Ik heb een paar apps die make-$http.get() oproepen en ik wilde te kunnen laten zien een mooi opgemaakte foutmelding met lelijke foutdetails verborgen, maar toegankelijk.  In principe, Dit:

image

En dan als de gebruiker op de fout klikt, zij zien meer info:

image

Eenvoudige dingen.  Aangezien de exacte dezelfde potentiĆ«le fout kan worden weergegeven in het administratieve scherm evenals de eindgebruiker scherm, het duidelijk gevraagd om een aangepaste hoekige richtlijn.  IK  vond dit uitstekende serie van artikelen (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) door de grote Dan Wahlin.  Na zijn advies, Ik heb zeer snel gemaakt een <Hello-wereld> richtlijn en verhuisde naar mijn meer complexe fout display zuigrubbers schoon. Ik liep in een beetje moeite met deze meer complexe richtlijn.  Gelukkig, soort bij toeval, Ik had verteld WebStorm (de editor gebruik ik deze dagen) dat de JS-bestand een hoekige bestand was en het hielp me het probleem achterhalen.  Dit is de code voor de richtlijn zelf:

angular.module("CDLApp").richtlijn("generalCdlErrorHandler", functie() {

terugkeer {
beperken: "E",
vervangen: True,

toepassingsgebied: {
retrieveLastConfigurationError: "&"
},

sjabloon:
'<div class = "waarschuwen waarschuwing-gevaar" rol = "waarschuwen" ng-init = "doShowExpandedErrorDetails = true" ng-show "retrieveLastConfigurationError =()">' +
' Was er een I/O fout of andere fout. Dit gebeurt meestal omdat gegevens configuratiebestand kon niet worden ' +
' gevonden of het configuratiebestand bevat onjuiste informatie (zoals verwijzen naar een documentbibliotheek ' +
' bestaat niet).' +
' <BR />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <een href = "#" ng-Klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Klik hier om te verbergen van details.' +
' </een>: ' +
' <BR />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <BR />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <een href = "#" ng-Klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Klik hier om uit te breiden foutdetails.' +
' </een>' +
' </div>' +
'</div>'
};
});

In principe, Ik ben het creĆ«ren van een nieuw element genaamd een "generalCdlErrorHandler".  Het moet toegang tot een functie genaamd retrieveLastConfigurationError en dat wordt behandeld in het toepassingsgebied-object.  Ik zou kunnen waarschijnlijk hebben net gebruikt de bovenliggende toepassingsgebied, maar dat voelt lui.  Als iemand denkt dat moet ik hebben gedaan die, Ik zou graag horen over het in de commentaren.

Dit was allemaal prima, maar ik was niet om het even wat.  Geen fouten popped opwaarts in de console (ten minste eenmaal vaste ik alle sx fouten die ik heb gemaakt langs de weg).  Ik gewoon krijgen niet geen uitvoer uit de richtlijn.  Ik ging en voegde enkele statische tekst voordat de richtlijn ng-show en ik * heeft * dat.. Dit deed me denken dat misschien de richtlijn was niet toegestaan om te impliciet maken nieuwe vars zoals "doShowExpandedErrorDetails" of een "ng-init" hebben daar. 

Ik ging terug naar de HTML-code om te zien dat als ik had een type en deze keer WebStorm hielp me uit.  Ik had al passeren in de retrieveLastConfigurationError functie als dit:

<algemeen-cdl-fout-handler retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</algemeen-cdl-fout-handler>

Maar het echt nodig om deze:

<algemeen-cdl-fout-handler ophalen-laatste-configuratie-error = "CDLController.retrieveLastConfigurationError()">
</algemeen-cdl-fout-handler>

WebStorm was slim genoeg om te weten dat het moest worden afgebroken.  Als dit argument niet had aangeboden dat hint, Ik zou waarschijnlijk worden nog steeds problemen met dit Glimlach.  Leuke tijden!

De truc is dit: niet alleen is de richtlijn elementnaam afgebroken, zo zijn de kenmerken die u aan het toevoegen.  Zodra ik heb toegevoegd de afbreekstreepjes, alles werkte prima.  Dan de tutorial is er gebeurd met korte enkele namen gebruiken, dus ik heb niet de verbinding maken.

Hoop dat dit helpt iemand.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

IE9 Echt niet leuk wanneer u een kortere weg met neemt uw <span> Tags

Ik heb gevallen in een slechte gewoonte van het gebruik van Chrome aller tijden.  Het is "slecht" omdat de dingen die ik ontwikkel echt nodig om te draaien op een heleboel andere zwemvlies grazen, met inbegrip van, Helaas IE8.  Mijn werk laptop heeft IE9 standaard voor welke reden dan ook) en ik was gewoon te doen een snelle controle om te zien wat dingen zag als en... het was niet mooi.  Bijvoorbeeld:

image

Er * verondersteld * te laten uitzien als dit:

image

 

Niet alleen was het uit, maar mijn klikgebeurtenissen waren niet afvuren.  (De meeste van hen, Hoe dan ook).

Visueel, het leek dingen begon te gaan uit de rails in de buurt van de "Advanced Setup" link.  Ik gegraven in dat deel van de HTML-code en bleek dat deze regel:

<klasse omvatten "glyphicon glyphicon-new-window" = />

Dat lijkt toegestane syntaxis ("Chrome versie 40.02214.94 m"is prima met het). Ik ging en veranderde het in elk geval, zoals:

<span klasse = "glyphicon glyphicon-new-window"></span>

Dat bevestigde het.

Zo'n klein klein ding veroorzaakt zo'n enorme puinhoop van een scherm.  Leuke tijden.

Dit gebeurde om een snelle oplossing, maar het is ook het soort ding dat wordt enkel uw rug uit de uitlijning wanneer je het ziet.  Er zijn meer dan 500 regels voor HTML in deze weinig admin functie en je willen gewoon niet om jezelf onder die onkruid graven te vinden, ooit Glimlach.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin