Mám několik aplikací, které se $http.get() volání a chtěl jsem být schopen Ukázat pěkně formátované chybové zprávy s podrobnostmi k ošklivé chybě skryté, ale přístupný. V podstatě, to:
A pak pokud uživatel klepne na chybu, Zobrazit více informací:
Jednoduché věci. Vzhledem k tomu, že přesně stejný potenciální chyba se může objevit v administrativní obrazovku, stejně jako obrazovka koncového uživatele, jasně vyzval k vlastní úhlové směrnice. JÁ našel to vynikající seriál článků (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) velký Dan Wahlin. Po jeho radu, Vytvořil jsem velmi rychle <Hello svět> směrnice a přesunul se k mé složitější Chyba zobrazení stěrka. Narazil jsem na problémy s touto složitější směrnicí. Šťastně, jaksi náhodou, Řekl jsem měl WebStorm (editor, který používám v těchto dnech) že byl soubor JS soubor úhlové a to mi pomohlo vyřešit problém. To je kód pro samotné směrnice:
angular.Module("CDLApp").směrnice("generalCdlErrorHandler", funkce() {
návrat {
omezit: "E",
nahradit: pravda,
rozsah: {
retrieveLastConfigurationError: "&"
},
Šablona:
'<div třída = "upozornit upozornění nebezpečí" role = "upozornění" NG-init = "doShowExpandedErrorDetails = true" NG-show = "retrieveLastConfigurationError()">' +
"Tam byl chyby nebo jiné chybě. To se obvykle stává, protože konfigurace datového souboru nelze ' +
' nalezeno nebo konfigurační soubor obsahuje nesprávné informace (například odkazující na knihovnu dokumentů ' +
' neexistuje).' +
' <BR />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <href = "#" NG klikněte = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klepnutím sem skryjete detaily." +
' </a>: ' +
' <BR />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <BR />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <href = "#" NG klikněte = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klepnutím sem rozbalíte podrobnosti o chybě." +
' </a>' +
' </div>' +
'</div>'
};
});
V podstatě, Já jsem vytvořit nový prvek s názvem "generalCdlErrorHandler". Potřebuje přístup k funkci nazvanou retrieveLastConfigurationError a která je zpracována v rozsahu objektu. Pravděpodobně by mohla jen použil jsem nadřazené obor, ale to je líný. Pokud si někdo myslí, že jsem měl udělat, Rád bych slyšet o tom v komentářích.
To bylo vše v pořádku, ale jsem nic nedělal. Žádné chyby vyskočila v konzole (alespoň jednou jsem opravil všechny chyby sx, vytvořené po cestě). Prostě nedostal jsem žádný výstup z působnosti této směrnice. Šel jsem a přidal nějaký statický text před ng výstava směrnice a * to * že. To se mi myslím, že možná směrnice nebylo dovoleno implicitně vytvořit nové vars jako "doShowExpandedErrorDetails", nebo mají "ng-init" tam.
Vrátil jsem se do HTML zjistit, že jestli jsem měl typ a tentokrát WebStorm mi pomohl. Jsem měl kolem ve funkci retrieveLastConfigurationError jako je tento:
<Generál cdl popisovač chyb retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Generál cdl popisovač chyb>
Ale to opravdu potřeba se tento:
<Generál cdl popisovač chyb načíst poslední konfigurace chyba = "CDLController.retrieveLastConfigurationError()">
</Generál cdl popisovač chyb>
WebStorm byl dost chytrý na to, vědět, že to muselo být rozdělován. Pokud to nebyl ten náznak, Já bych asi být stále řešení problémů to . Zábavné krát!
Trik je v tom to: Nejenže je název směrnice prvku dělení, tak jsou všechny atributy, které přidáte k němu. Jakmile jsem přidal spojovníky, Všechno to fungovalo skvěle. Dan kurz se stalo používat krátká jména jednoho, tak jsem neudělal spojení.
Doufám, že to pomůže někdo.
</Konec>
Za mnou na Twitter na http://www.twitter.com/pagalvin