Punta van per les Directives Angular (O, Aprenent a estimar de guions de nou)

Tinc un parell d'apps que fan $http.get() trucades i jo volia ser capaç de mostrar un missatge d'error molt ben formatada amb lleig error detalls amagats, però accessible.  Bàsicament, això:

image

I llavors si l'usuari fa clic en l'error, veuen més informació:

image

Coses simples.  Ja que el mateix error potencial exacte poden aparèixer en la pantalla administrativa, així com la pantalla de l'usuari final, que diu clarament per una directiva Angular personalitzat.  JO  trobat això sèries destacades d'articles (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) pel gran Dan Wahlin.  Seguint el seu Consell, Molt ràpidament em creat un <Hola món> Directiva i es va traslladar a la meva squeegee de exhibició d'error més complex. Corria a una mica de problemes amb aquesta Directiva més complex.  Feliçment, per casualitat una mena de, Jo havia dit WebStorm (l'editor que faig servir aquests dies) que l'arxiu JS era un fitxer Angular i m'ajudava a esbrinar l'assumpte.  Aquest és el codi per a la mateixa Directiva:

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

retorn {
restringir: "E",
substituir: True,

àmbit d'aplicació: {
retrieveLastConfigurationError: "&"
},

plantilla:
'<div class = "avisa' alerta-perill" paper = "avisa" ng-init = "doShowExpandedErrorDetails = true" ng-demostració = "retrieveLastConfigurationError()">' +
"Hi havia un error e/s o altre error. Normalment això passa perquè el fitxer de dades de configuració no podria ser ' +
"Hem trobat o el fitxer de configuració conté informació inexacta (com una biblioteca de documents de referència " +
"que no existeix).' +
' <br />' +
' <div ng-demostració = "doShowExpandedErrorDetails">' +
' <un href = "#" clic ng = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Feu clic aquí per amagar detalls." +
' </un>: ' +
' <br />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <br />' +
' </Div>' +
' <div ng-demostració = "!doShowExpandedErrorDetails">' +
' <un href = "#" clic ng = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Feu clic aquí per ampliar detalls d'error." +
' </un>' +
' </Div>' +
'</Div>'
};
});

Bàsicament, Estic creant un nou element anomenat una "generalCdlErrorHandler".  Necessita accés a una funció anomenada retrieveLastConfigurationError i que és tractada amb l'objecte d'abast.  Probablement podria tenir només utilitzava l'abast del pare, però que se sent mandrós.  Si algú pensa que hauria d'haver fet que, M'encantaria escoltar-lo en els comentaris.

Això estava tot bé, però jo no estava tenint res.  Apareixia a la consola d'errors (a mínim un cop em fixo tots els sx errors que he creat en el camí).  Simplement no aconseguia cap eixida des de la Directiva.  I se n'anava i afegia algun text estàtic abans la Directiva ng-demostració i jo * feia * aconseguir que. Això em va fer pensar que potser la Directiva no estava permès implícitament crear vars noves com "doShowExpandedErrorDetails" o tenir un "ng-init" allà. 

Tornava a l'HTML per veure que si hi hagués un tipus i aquesta vegada WebStorm m'ajudava.  Jo havia estat passant en la funció retrieveLastConfigurationError com aquest:

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

Però el realment es necessita per ser això:

<general-cdl-error-controlador recuperar últim-configuració-error = "CDLController.retrieveLastConfigurationError()">
</general-cdl-error-controlador>

WebStorm era prou intel ligent com saber que havia de ser hyphenated.  Si no hagués proporcionava aquell toc, Em vols probablement ser encara depuració això somriure.  Temps de diversió!

El truc és això: no només és el nom de Directiva element hyphenated, així són cap atribut que afegir-hi.  Una vegada que afegia els guions, tot treballat gran.  Tutorial de Dan va passar a utilitzar noms individuals pocs, Així que jo no vaig fer la connexió.

Espero que això ajudi a algú.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

IE9 Realment no li agrada quan vostè pren una drecera amb el seu <span> Etiquetes

Jo he caigut en un mal hàbit d'utilitzar Cromen tot el temps.  És "dolent", perquè la matèria que m desenvolupar realment necessiti corri en un munt d'altres navegadors web, incloent-hi, tristament IE8.  El meu portàtil de treball té IE9 estàndard per qualsevol raó) i jo estava fent una ràpida comprovació per veure quines coses semblava... i com no era bonica.  Per exemple:

image

Té * suposa * a aquest aspecte:

image

 

No només era això fora, però els meus esdeveniments clic no estaven disparant.  (Majoria d'ells, de tota manera).

Visualment, semblava que les coses van començar a anar fora dels carrils a prop de l'enllaç "Configuració avançada".  Que excava que part de l'HTML i trobar que tenia aquesta línia:

<abasten class = "glyphicon glyphicon-nova-finestra" />

Allò sembla com sintaxi admissible ("Versió de chrome 40.02214.94 m"està bé amb ell). Vaig anar i canviar-lo de totes maneres, com es Mostra:

<abasten class = "glyphicon glyphicon--finestra nova"></span>

Que l'arreglava.

Una coseta tan minúscul va causar un desastre enorme d'una pantalla.  Temps de diversió.

Això va passar a ser una solució ràpida, però també és el tipus de cosa que només es posa la columna vertebral fora d'alineació Quan veieu-lo.  Hi ha més 500 línies d'HTML en aquesta funció admin poc i no volen trobar-se excavant entre les males herbes, mai somriure.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

HTTP 406 Error quan s'utilitza $http.get Angular contra SharePoint resta punts finals

Actualització: Marc d'anunci ndersson assenyalar aquesta gran peça d'informació: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Que explica molt :).

Que pot ser el pitjor títol d'una entrada de blog mai! Anyhoo.

Solen fer tota la meva prototipatge contra una instància de O365. Tinc el meu exemple personal per tal que no ha de preocupar per afectar a ningú més. Com acotació al marge – recordeu quan anomenem realitzades al voltant de màquines virtuals en nostres portàtils amb molsa-SQL Server, L'IIS, decidir Hyper-V contra. VMWare? Anyhoo...

Jo havia desenvolupat una aplicació utilitzant Angular en aquest entorn que fa, entre altres coses, això:

$http.Get(URLServidor)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.value.forEach(funció(theResult) {

// i així successivament i així escuma

Això estava treballant just bé en dos diferents SharePoint entorns en línia. No obstant això, Quan el meu col lega portat-lo a una instància de Cloudshare, ell estava aconseguint un HTTP 406 error (que era la primera vegada que mai arribava aquell, Així que... yay, Suposo que). Vam fer una mica de recerca i s'adonava que l'encapçalament "Accepta" era fora. Era molt feliç amb SharePoint en línia:

Acceptar: aplicació/json

Però l'exemple cloudshare (que és SP en prem, allotjat en un servidor virtual) volia el clàssic "odata = verbosa" afegit en, així:

Acceptar: aplicació/json;OData = depuraci ≤

D'arreglar allò, Hem afegit la capçalera com a tal:

var config = {capçaleres: {
"Accepta": ' aplicació/json;OData = depuraci ≤ "
}
};

$http.Get(URLServidor,config)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.value.forEach(funció(theResult) {

// i així successivament i així escuma

Que es va desfer de la 406, però també va canviar el format de la resposta. Es tractava més aviat... detallat. (Haha!) Calien canvis més i aquí està el resultat final:

var config = {capçaleres: {
"Accepta": ' aplicació/json;OData = depuraci ≤ "
}
};

$http.Get(URLServidor,config)
.èxit(funció(dades, l'estat, capçaleres, config) {

var getLinksResponse = dades;

getLinksResponse.d.Results.forEach(funció(theResult) {

// i així successivament i així escuma

Això només es va convertir en un 30 minut problema per a nosaltres, així ens va tenir sort a. Esperançadorament algú es troba aquesta útil.

</final>

How-to: Permeten múltiples peces angulars del SharePoint Web a la mateixa pàgina

Aquest bloc llocs descriu com es pot tenir múltiples Angular.js basat en elements web del SharePoint (fa referència a través d'un element web editor de continguts) a la mateixa pàgina. Vaig a trucar a un element web editor de continguts (CEWP) que fa referència a JavaScript construït utilitzant el marc Angular.js una "Part Angular Web."

Procés d'arrencada de angular és super fàcil i just sobre cada exemple que trobeu sobre la internets va alguna cosa com això:

<HTML ng-app = 'myApp'>

<bla /><bla /><bla />

</HTML>

Això es trenca, No obstant això, Si voleu permetre que múltiples CEWP representar parts múltiples webs angular en la mateixa pàgina. Angular es automàticament només arrencar contra la primera Directiva ng-app es troba – com a mínim a partir de la versió angular 1.3.6. La solució és força simple-arrencar manualment el seu codi en canvi. L'anterior ara canvia a alguna cosa com això:

<cos>
<d
Identificador IV =”bootstrapHere” ng-controlador =”myController com theController”>
<bla /><bla /><bla />
</Div>
</cos>

<escriptura src =”//Ajax.googleapis.com/Ajax/libs/angularjs/1.3.6/angular.js”></script>

<script>
angular.bootstrap(angular.element(document.getElementById(“bootstrapHere”)),['myApp']);
</script>

Bàsicament, enlloc de fer servir ng-app en l'element per fer el seu encebant, vostè donar una bufetada a un ID a aquest element. Llavors, utilitzar l'arrencada() mètode en angular propi per controlar la encebant procés al temps d'execució. He provat això amb tres parts diferents web Angular en la mateixa pàgina i funciona un encant.

</final>

undefinedSubscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

La Comissió de vehicles de Motor de Nova Jersey pren una altra víctima

Així, meu fill està una mica endarrerida obtenint el seu permís de conducció.  Ahir, a mig matí, ell camions fins a Oakland NJ per aconseguir-ho.  Ell s'hi, s'omple de la paperassa s'expedeixi el permís d'unstamped i s'assabenta que ara cal anar a un altre Localització de MVC per prendre el seu examen ocular.  Perquè, aparentment, multímetres altament qualificats ull no només viu en qualsevol lloc, tan NJ MVC ha d'anar on és el talent.  O, Potser és perquè estan seguint una filosofia hamiltonià de consolidació?  Tant com Hamilton sentit financer i fabricació consolidació van ser crítics de la puixança econòmica futura de la República, Potser NJ MVC sent que necessita consolidar ull proves de talent per a la futura força de NJ MVC?  Potser això és part d'un pla inefable?  Per desgràcia, Tinc només preguntes sobre aquest tema i no respostes. 

Assessorament de Oakland següents, esposa i fill seu camí fins a Lodi de camions, NJ amb el permís de unstamped a Lodi.  Lodi pot tenir la pitjor aparcament de qualsevol localització NJ MVC.  I, ja que ells també acollirà alguns dels escassos encara molt cobejat ull proves màquines i ull proves professionals de, Ells atreuen supplicants de totes les tendències, tons, Educació i gawkers.  El meu fill treballa la seva manera a través del laberint de línies i adreces previstes pels professionals NJ MVC "never-look-them-in-the-eye" i finalment arribarem a l'ull proves línia.  Ara aprenen que la persona d'Oakland va cometre un error en el permís de unstamped.  Va malament teclejat el número de la seguretat social, posant un un "8" en lloc de "2" en un dels dígits.  La persona NJ DMV sabia això perquè quan ella arrencades malament que SS# a l'ordinador, això no Mostra el nom del meu fill.  Dir dona i fill, "Ah, que és el número equivocat, vostè necessita un "2" allà en comptes d'un "8"."  El que molts, Potser trobaria cada persona importada just en aquest punt és per a la persona NJ MVC simplement corregir el nombre acaba d'entrar a l'ordinador.  Hectàrees! Tonto!  No, en canvi li demanà per sempre la seva targeta de la seguretat social.  Anem divagant per un moment i tenir en compte que per obtenir el permís de unstamped en primer lloc, havia ja proporcionà un passaport de nosaltres, així com una Nova Jersey certificat de naixement i carta escrita per ell al seu domicili.   És la seva mare amb ell, Comparteix el seu nom, la seva adreça, la seva alçada (però lamentablement, no el seu gust en pel·lícules de ciència-ficció) ... el que sigui, meu fill està bé i veritablement identificats com a residents de llarga vida d'aquests Estats dels EUA i de fet, Nova Jersey propi per qualsevol mesura que pugui imaginar.  Si la persona NJ MVC vols simplement corregit l'error que va fer la persona Oakland, l'ordinador vols tenir arrencades informació del meu fill i que hauria estat final de la història.  Però una altra vegada, tonto!  No pot fer que. En canvi, la MVC NJ insisteixen ara en una targeta de la seguretat social. 

Així, esposa i fill anar casa per aconseguir-ho i retorn.  I al final, obté el seu permís.

Això és tres diferents viatges a NJ MVC en un dia.  Per obtenir el seu permís.  Va prendre gairebé 6 hores des del principi fins al final.  Això és la introducció del meu fill per conducció a l'estat de jardí.

NJ MVC és clarament trencat. 

</final>

Angular falla en arrencar a IE9

He estat jugant al voltant amb Angular.js per a l'últim llarg mentre i per a la vida de mi, NO podria aconseguir meus apps per llançar en IE9 Angular.  Tots ells treballen bé en IE11 però IE9 només mostraria les claus i trossos similars.

He buscat al voltant i no podria trobar qualsevol queixar-se sobre el seu problema.  Funcionava bé a Chrome, IE11, no només IE9.

Va ser expulsats pel fet que la consola IE m'estava donant errors com aquest:

SEC7111: Seguretat HTTPS està compromesa per resolució://ieframe.dll/forbidframing.htm

Aquell error em va fer pensar que hi havia algun problema descarregant l'angular o altres biblioteques que necessitava.  Com a resultat, això no era el problema.

Els estrenyent al voltant de l'internets, Finalment esbrinava que la frase que necessitava buscar era "arrencada" i que semblava que el encebant estava fallant.  Al final, el meu problema era que havia decorat la meva <HTML> etiqueta amb l'atribut ng-app, com a:

<HTML ng-app = "MatrixApp">

Pou, allò no funcionava per IE9.  En canvi, Embolica tota la resta de l'HTML en el <cos> dins d'un div i referències MatrixApp d'aquesta manera.

Problema resolt.

Esperançadorament algú això estalvia una mica de dolor.

</final>

Crear formularis personalitzats SharePoint sense una pàgina mestra

El meu col lega, Lauren Jones, escrivia cap amunt d'un bonic passeig completament damunt com crear un formulari d'entrada de dades personalitzades mitjançant el SharePoint Designer.  Que no és exactament "nou sota el sol", però hi ha una mica de toc.  En les seves paraules:

Crear formularis personalitzats és senzill de fer al SharePoint Designer, Navegui a la llista i en el selecte menú de cinta ' formulari de llista’ i crear la nova plantilla de formulari.

Això funciona bé si voleu que el vostre formulari que s'adjunta a vostè pàgina mestra, però què passa si teniu el cas d'ús de creació d'una forma que és en una finestra desplegable o és independent sense el Cromar SharePoint. Jo tenia exactament aquest cas d'ús, Volia en el costum d'estil forma llavors ús que es formen en una finestra emergent div inline dins una pàgina.

No desespereu, hi ha una manera de fer això que no és tan intuïtiva però bastant fàcil d'aconseguir.

Podeu llegir tots els detalls aquí: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=55&rtitle=customforms&rsrouce=pgblog i es pot veure en acció clicant l'enllaç "Contacta'ns per a més informació" en qualsevol dels serveis a la pàgina de serveis del nostre lloc gran poma SharePoint (http://www.bigapplesharepoint.com/services).

Lauren escriu un munt de coses bones sobre UX i branding.  Podeu veure més d'escriure aquí aquí: http://www.bigapplesharepoint.com/team?showExpertName=Lauren%20Jones.

</final>

Disseny de distracció i borratxo en la funció Coolaid

El meu col lega, Lauren Jones (https://twitter.com/laurenjones02) escrivia cap amunt d'un breu article parlant de com excessivament desplegaments SP complexes són molt durs a usuaris finals.  És obvi mena de, d'una manera, però és fàcil per a mi dir que després jo he orquestrar un munt de complexos desplegaments de coses als usuaris finals desprevinguts al llarg dels anys.

Aquí està la clau ' gràfic:

Fa cinc anys, Quan he desenrotllat SharePoint a una organització per primera vegada amb un objectiu primordial de convertir-se en la plataforma de col·laboració i reemplaçant compartir unitats, També hem introduït social i menjars de notícies a través de RSS, Meus llocs i perfils, i folcsonomies Etiquetatge. No cal dir, això era molt per a usuaris finals a adoptar en una sola vegada. Mentre que hi va haver èxit amb l'adopció al voltant de gestió documental i perfils, RSS i etiquetatge era menys reeixit i aquesta va ser realment a causa del canvi gestió comunicació i formació. No podíem fer-ho tot a la vegada. Tenint menys és més aproximació i l'alliberament de funcionalitat en fases és més fàcil per als usuaris finals a acceptar i adoptar per.

Aquest article recorda un altre poc que vaig llegir Kris Gale relacionats amb el conjunt de tret de Yammer, “Aquell Cost enginyers i directors de producte no consideren.”

Si teniu un relat de terror o història d'èxit per compartir, Espero que farà que en comentaris en el lloc de la gran poma.

</final>

Resum setmanal – Juliol 13, 2014

Jo per a xpost aquesta aquí el cap setmana passat. 

Heus aquí la 3Rd article d'una sèrie on escric sobre blogs i articles en línia que van ser especialment interessants per a mi en l'última setmana o així.  Entrada d'aquesta setmana a la sèrie destaca dos projectes CodePlex per a substitució potencial d'InfoPath i gestionar permisos amb SharePoint, notícies sobre satèl·lits, encara un altre framework JavaScript i l'ullet a Ada Babbage i el seu paper en la història de la informàtica.

Vostè pot llegir aquí: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=93&rsource=pgblog&rtitle=roundup

</final>

Vista CAML consultes en temps Real amb espectador d'ULS

El meu col lega, Ashsih Patel, escrivia cap amunt d'un bonic passeig completament descrivint com veure la CAML darrere SP diverses consultes que passi en el curs de negoci en temps real utilitzant l'espectador ULS.

Aquí està la introducció:

Alguna vegada vas voler saber quins CAML consultes són executats pel SharePoint Server?

Pou, per a la resolució de problemes i aprenentatge propòsit, no és una mala idea. Després de tot, SQL Profiler ha estat ajudar-nos a detectar un munt de qüestions.

Pot haver-hi productes fora d'allà però I imaginava una manera de fer-ho sense gastar dòlars extra! I aquí està...

Podeu llegir la cosa sencera aquí: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=68&rsource=pgblog&rtitle=caml.

</final>