archivos mensuales: Febrero 2015

Punta de localización de averías para directivas Angular (O, Aprendiendo a amar de guiones de nuevo)

Tengo un par de aplicaciones hacen $http.get() llamadas y yo quería ser capaz de mostrar un mensaje de error muy bien formateado con error feo detalles ocultos, pero accesible.  Básicamente, Esto:

image

Y entonces si el usuario hace clic en el error, Ven más info:

image

Cosa simple.  Desde el exacto mismo potencial error puede aparecer en la pantalla administrativa así como la pantalla del usuario final, claramente pidió una directiva personalizada Angular.  ME  Encontré esto excelente serie de los artículos (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) por la gran Dan Wahlin.  Siguiendo su Consejo, He creado muy rápidamente una <Hola mundo> la Directiva y se trasladó a mi más complejo escurridor pantalla de error. Me topé con un poco de problemas con esta directiva más compleja.  Felizmente, una especie de casualidad, Le había dicho informaticas (el editor de que usar estos días) que el archivo JS era un archivo Angular y me ayudó a resolver el problema.  Este es el código de la propia Directiva:

angular.Module("CDLApp").Directiva("generalCdlErrorHandler", función() {

retorno {
restringir: "E",
reemplazar: verdadero,

ámbito de aplicación: {
retrieveLastConfigurationError: "&"
},

plantilla:
'<div class = "alerta alerta-peligro" papel = "alerta" NG-init = "doShowExpandedErrorDetails = true" ng-Mostrar = "retrieveLastConfigurationError()">' +
"Hubo un error de E/S u otro error. Esto suele suceder porque no podía ser el archivo de configuración de datos ' +
' se encuentra o el archivo de configuración contiene información inexacta (como referencia a una biblioteca de documentos ' +
"eso no existe).' +
' <BR />' +
' <ng-Mostrar div = "doShowExpandedErrorDetails">' +
' <a href = "#" ng-clic = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
«Haga clic aquí para ocultar los detalles.» +
' </un>: ' +
' <BR />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <BR />' +
' </div>' +
' <ng-Mostrar div = "!doShowExpandedErrorDetails">' +
' <a href = "#" ng-clic = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
«Haga clic aquí para ampliar detalles del error». +
' </un>' +
' </div>' +
'</div>'
};
});

Básicamente, Estoy creando un nuevo elemento llamado un "generalCdlErrorHandler".  Necesita acceso a una función llamada retrieveLastConfigurationError y que se maneja en el objeto del ámbito de aplicación.  Probablemente podría haber sólo usado alcance de los padres, Pero se siente perezoso.  Si alguien piensa que debería haber hecho eso, Me encantaría escucharlo en los comentarios.

Esto fue bien, Pero no sentía nada.  No hay errores en la consola (al menos una vez he arreglado todos los errores de sx que creé en el camino).  Simplemente no tengo ninguna salida de la Directiva.  Fui y añadido algún texto estático antes de la Directiva ng-show y yo * hizo * eso. Esto me hizo pensar que tal vez la Directiva no estaba permitida implícitamente crear nuevos vars como "doShowExpandedErrorDetails" o una "ng-init" en allí. 

Volví en el HTML para ver si tenía un tipo y esta vez informaticas me ayudó a salir.  Había estado haciendo pasar en la función retrieveLastConfigurationError como esta:

<General-cdl-error-controlador retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</General-cdl-error-controlador>

Pero realmente necesitaba ser esto:

<General-cdl-error-controlador de recuperar-último-configuración-error = "CDLController.retrieveLastConfigurationError()">
</General-cdl-error-controlador>

Informaticas era lo suficientemente inteligente como para saber que debía integrarse.  Si hubiese dado esa pista, Yo podría probablemente ser todavía problemas esto Sonreír.  Divertido veces!

El truco es este: No sólo es el nombre del elemento de directiva con un guión, Así que son atributos que agrega a él.  Una vez que he añadido los guiones, todo funcionó muy bien.  Tutorial de dan pasó a utilizar nombres cortos solos, Así que yo no hice la conexión.

Espero que esto ayude a alguien.

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin

IE9 Realmente no le gusta cuando tomas un atajo con tu <abarcan> Etiquetas

He caído en una mala costumbre de usar Chrome todo el tiempo.  Es "malo" porque las cosas que me desenvuelvo realmente necesita para funcionar en muchos otros navegadores web, incluyendo, Lamentablemente IE8.  Mi portátil de trabajo tiene IE9 estándar por cualquier motivo) y estaba haciendo una rápida comprobación para ver qué cosas... y como lo fue bonito.  Por ejemplo:

image

Tiene * supone * a este aspecto:

image

 

No sólo fue apagado, Pero no estaban disparando mis eventos de clic.  (Mayoría de ellos, de todos modos).

Visualmente, Parecía que las cosas empezaron a salir los rieles cerca el enlace "Configuración avanzada".  Que excavó en esa parte del HTML y encontré que tenía esta línea:

<span class = "glyphicon glyphicon-nueva-ventana" />

Parece que es permisible sintaxis ("Versión de chrome 40.02214.94 m"está bien.). Fui y me cambié de todos modos, como se muestra:

<span class = "glyphicon glyphicon-nuevo-la ventana"></abarcan>

Lo arregló.

Una cosita causó un desastre enorme de una pantalla.  Divertido veces.

Esto le pasó a ser una solución rápida, Pero también es el tipo de cosas que sólo la columna vertebral de la alineación cuando lo veas.  Existen más de 500 líneas de HTML en esta función admin poco y no quieren encontrarte escarbando entre las hierbas, alguna vez Sonreír.

</final>

undefinedSuscribirse a mi blog.

Sígueme en Twitter en http://www.twitter.com/pagalvin