Fejlfinding Tip til kantede direktiver (Eller, At lære at elske bindestreger igen)

Jeg har et par apps at gøre $http.get() opkald og jeg ønskede at være i stand til at vise et pænt formateret fejlmeddelelse med oplysninger om grim fejl skjult, men tilgængelig.  Dybest set, Dette:

image

Og derefter hvis brugeren klikker på fejlen, de ser mere info:

image

Simple ting.  Da den nøjagtige samme potentielle fejl kan vises i skærmbilledet administrative samt skærmbilledet slutbrugeren, det klart kaldes for en brugerdefineret kantede direktiv.  JEG  fandt denne fremragende serie af artikler (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) af stort Dan Wahlin.  Efter hans råd, Jeg meget hurtigt skabt en <Hej-verden> direktiv og flyttede videre til mine mere komplekse fejl display sugefod. Jeg løb ind i en smule problemer med denne mere komplekse direktiv.  Lykkeligt, slags ved en tilfældighed, Jeg havde fortalt WebStorm (editor jeg bruge disse dage) at JS fil var en kantede fil og det hjalp mig med at finde ud af problemet.  Dette er koden for selve direktivet:

Angular.Module("CDLApp").direktiv("generalCdlErrorHandler", funktion() {

tilbagevenden {
begrænse: "E",
Erstat: True,

anvendelsesområde: {
retrieveLastConfigurationError: "&"
},

skabelon:
'<div class = "alarm alarm-fare" rolle = "indberetning" NG-init = "doShowExpandedErrorDetails = true" NG-Vis = "retrieveLastConfigurationError()">' +
' Der var en i/o fejl eller andre fejl. Dette sker typisk fordi konfiguration datafil ikke kunne være ' +
' fundet eller konfigurationsfilen indeholder unøjagtige oplysninger (som refererer til et dokumentbibliotek ' +
«der findes ikke).' +
' <BR />' +
' <div ng-Vis = "doShowExpandedErrorDetails">' +
' <en href = "#" NG-klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
«Klik her for at skjule detaljer.» +
' </en>: ' +
' <BR />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <BR />' +
' </div>' +
' <div ng-Vis = "!doShowExpandedErrorDetails">' +
' <en href = "#" NG-klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
«Klik her for at udvide fejldetaljer.» +
' </en>' +
' </div>' +
'</div>'
};
});

Dybest set, Jeg opretter et nyt element kaldet en "generalCdlErrorHandler".  Det skal have adgang til en funktion kaldet retrieveLastConfigurationError og som håndteres i objektet anvendelsesområde.  Jeg kunne sandsynligvis have bare brugt det overordnede omfang, men der føles doven.  Hvis nogen mener burde jeg have gjort det, Jeg ville elske at høre om det i kommentarerne.

Dette var alt fint, men jeg var ikke at få noget.  Ingen fejl dukkede op i konsollen (mindst en gang fast jeg alle sx fejl jeg skabt undervejs).  Jeg gjorde ikke blot få noget output fra direktivet.  Jeg gik og tilføjet nogle statisk tekst før direktivet ng-show og jeg * gjorde * få,. Dette gjorde mig til at tænke, at måske direktivet ikke var tilladt at implicit oprette nye vars som "doShowExpandedErrorDetails" eller har en "ng-init" derinde. 

Jeg gik tilbage i HTML til at se, hvis jeg havde en type, og denne gang WebStorm hjalp mig ud.  Jeg havde stillet i funktionen retrieveLastConfigurationError som denne:

<General-cdl-fejl-handleren retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</General-cdl-fejl-handleren>

Men det virkelig skulle være det:

<General-cdl-fejlbehandleren hente-sidste-konfiguration-fejl = "CDLController.retrieveLastConfigurationError()">
</General-cdl-fejl-handleren>

WebStorm var smart nok til at vide, at det skulle deles.  Hvis det ikke havde fastsat at vink, Jeg ville sandsynligvis stadig fejlfinding dette Smil.  Sjov gange!

Tricket er dette: ikke kun er direktiv elementnavnet bindestreg, så er de attributter, du føjer til den.  Når jeg tilføjet bindestregerne, alt arbejdede stor.  Dan's tutorial kom til at bruge korte enkelt navne, så jeg ikke gjorde gøre forbindelsen.

Håb indeværende hjælper nogen.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

IE9 Virkelig ikke lide det, når du tager en genvej med din <span> Tags

Jeg har faldet i en dårlig vane med at bruge Chrome hele tiden.  Det er "dårlige", fordi de ting jeg udvikle virkelig behov for at køre på en masse andre webbrowsere, herunder, Desværre IE8.  Mit arbejde laptop har IE9 standard uanset af hvilken grund) og jeg bare laver en hurtig check at se, hvad ting så som og... det var ikke smuk.  For eksempel:

image

Det er * meningen * at ligne dette:

image

 

Ikke alene var det ud, men min Klik begivenheder ikke var fyring.  (De fleste af dem, alligevel).

Visuelt, det lignede ting begyndte at gå af sporet nær linket "Advanced Setup".  Jeg gravede i del af HTML og fandt at jeg havde denne linje:

<span class = "glyphicon glyphicon-ny-vindue" />

Der synes at være tilladte syntaks ("Chrome version 40.02214.94 m"er fint med det). Jeg gik og ændret det alligevel, som vist:

<span class = "glyphicon glyphicon-ny-vindue"></span>

At nagelfast sig.

Sådan en lille lille ting forårsaget sådan et stort rod af en skærm.  Sjov gange.

Dette skete for at være en hurtig løsning, men det er også slags ting, der bare får din rygsøjle ude af trit, når du ser den.  Der er over 500 HTML-linjer i denne lille admin funktion og du ønsker bare ikke at finde dig selv grave blandt disse ukrudt, nogensinde Smil.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

HTTP 406 Fejl når du bruger kantede $http.get mod SharePoint resten slutpunkter

Opdatering: Marc AD ndersson påpegede dette store stykke af info: http://Blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Det forklarer en masse :).

Det kan være den værste titlen på et blog-indlæg nogensinde! Anyhoo.

Jeg typisk gøre alle mine prototyping mod en O365-forekomst. Jeg har min personlige instans, så jeg ikke behøver at være bekymret om påvirker alle andre. Som en sidebemærkning--huske, når vi kalder udført omkring virtuelle maskiner på vores bærbare computere med mos-SQL Server, IIS, besluttende Hyper-V vs. VMWare? Anyhoo...

Jeg havde udviklet en app ved hjælp af kantede i dette miljø, der gør, blandt andet, Dette:

$http.get(serverUrl)
.succes(funktion(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktion(Myndigheden) {

// og så videre og så skum

Det virkede fint i to forskellige SharePoint online miljøer. Dog, Når min kollega porteret det til en forekomst af Cloudshare, Han fik en HTTP 406 fejl (der var første gang jeg nogensinde fik at man, så... yay, Jeg gætter). Vi gjorde en smule forskning og bemærket, at overskriften "Acceptere" var off. SharePoint online var helt tilfreds med:

Acceptere: ansøgning/json

Men cloudshare forekomsten (der er SP på prem, hostet i en virtuel server) ønskede klassiske "odata = verbose" tilføjet i samt:

Acceptere: ansøgning/json;OData = verbose

Hen til lave at, vi tilføjede i hovedet som sådan:

var config = {overskrifter: {
'Acceptere': «ansøgning/json;OData = verbose'
}
};

$http.get(serverUrl,config)
.succes(funktion(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktion(Myndigheden) {

// og så videre og så skum

Der fik befri for den 406, men det også ændret format af respons. Det var mere... verbose. (haha!) Flere ændringer var nødvendige og her er det endelige resultat:

var config = {overskrifter: {
'Acceptere': «ansøgning/json;OData = verbose'
}
};

$http.get(serverUrl,config)
.succes(funktion(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(funktion(Myndigheden) {

// og så videre og så skum

Dette kun forvandlet til et 30 minut problem for os, så vi lucked ud. Forhåbentlig finder nogen dette nyttigt.

</slutningen>

Vejledninger: Aktivere flere kantede SharePoint-webdele på den samme side

Denne blog indlæg beskriver, hvordan du kan have flere Angular.js baseret SharePoint-webdele (refereres til via en Indholdsredigering webdel) på samme side. Jeg kalder en Indholdsredigering webdel (CEWP) der henviser til JavaScript bygget ved hjælp af Angular.js rammer en "kantede webdel."

Kantedes bootstrap proces er super let og næsten alle eksempel du finde på internets går noget som dette:

<HTML-ng-app = "MitProgr">

<blah /><blah /><blah />

</HTML>

Dette nedbryder, dog, Hvis du vil aktivere flere CEWP repræsenterer flere kantede webdele på den samme side. Kantede vil kun automatisk systemgenerere mod det første direktiv om ng-app det fund – i det mindste fra kantede version 1.3.6. Løsningen er ret enkel – bootstrap manuelt din kode i stedet. Ovenstående nu ændres til noget som dette:

<kroppen>
<d
IV id =”bootstrapHere” NG-controller =”myController som theController”>
<blah /><blah /><blah />
</div>
</kroppen>

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

<script>
Angular.bootstrap(Angular.element(Document.getElementById(“bootstrapHere”)),["MitProgr"]);
</script>

Dybest set, istedet for benytter ng-app på element til at gøre din bootstrapping, du slap et ID på dette element. Derefter, bruge bootstrap() metoden på kantede sig selv til at styre de bootstrapping behandle i køre-tid. Jeg har testet dette med tre forskellige kantede webdele på den samme side og det virker en charme.

</slutningen>

undefinedAbonner på min blog.

Følg mig på kvidre på http://www.twitter.com/pagalvin

New Jersey motorkøretøj Kommissionen tager endnu et offer

Så, min søn er en smule forsinket, at opnå sin kørsel tilladelse.  I går, i midten af morgen, han lastbiler op til Oakland NJ til at få det.  Han får der, fyld ud hans papirarbejde er udstedt en ubanderoleret tilladelse og erfarer, at han nu skal gå til en anden MVC placering til at tage hans synsprøve.  Fordi, tilsyneladende, højtuddannede øje testere lever ikke bare overalt, så NJ MVC skal gå hvor talent er.  Eller, måske er det fordi de følger en Hamiltonske filosofi om konsolidering?  Meget som Hamilton følte finansielle og produktionsvirksomheder konsolidering blev afgørende for den fremtidige økonomiske styrke i Republikken, måske føler NJ MVC de skal konsolidere øje test talent for fremtidige styrken af NJ MVC?  Måske er det en del af en usigelig plan?  AK, Jeg har kun spørgsmål om dette emne og ingen svar. 

Følgende Oakland rådgivning, kone og søn lastbil deres vej ned til Lodi, NJ med portoen tilladelsen til Lodi.  Lodi muligvis den værste parkering af enhver NJ MVC placering.  Og, da de også vært for nogle af knappe endnu eftertragtede meget øje test maskiner og øje test fagfolk, de tiltrækker supplikanter af alle striber, nuancer, uddannelse og gawkers.  Min søn arbejder sig vej gennem labyrinten af linjer og retninger fra de "never-look-them-in-the-eye" NJ MVC fagfolk og endelig ankommer til øjet test linje.  Nu lærer at Oakland person har lavet en fejl på portoen tilladelsen.  Han indtastet mis CPR-nummer, at sætte en en "8" i stedet for "2" i en af cifre.  NJ DMV person vidste dette, fordi når hun trukket op den forkerte SS# i computeren, det gjorde ikke vise min søns navn.  Kone og søn siger, "Åh, Det er det forkerte nummer, du har brug for en '2' der i stedet for en "8." "  Hvad mange, måske hver enkelt fair minded person ville forvente på dette punkt er den NJ MVC person at blot korrigere antallet de netop trådt ind i computeren.  Ha! Nar!  Nej, i stedet blev han bedt om at leveret sit sygesikringsbevis.  Lad os sidespring et øjeblik og overveje, at for at få den ubanderoleret tilladelse i første omgang, han havde allerede ydet et amerikansk pas samt en New Jersey fødselsattest og brev skrevet til ham på sin hjem adresse.   Hans mor er med ham, deler hans navn, hans adresse, hans højde (men desværre, ikke hans smag i sci-fi film) ... du navngive det, min søn er godt og virkelig identificeret som livet længe bosat i disse stater i USA og faktisk, New Jersey sig selv ved enhver foranstaltning, du kan forestille dig.  Hvis NJ MVC personen ville har simpelthen fast, fejlen at Oakland person fik, computeren ville have trukket op min søns oplysninger og det ville have været afslutningen på historien.  Men igen, nar!  De kan ikke gøre det. I stedet, NJ MVC insistere på et sygesikringsbevis nu. 

Så, kone og søn gå hjem til at få det og vende tilbage.  Og i sidste ende, han opnår sin tilladelse.

Der er tre forskellige ture til NJ MVC på én dag.  At få hans tilladelse.  Det tog næsten 6 timer fra start til slut.  Dette er min søns Introduktion til kørsel i tilstanden Garden.

NJ MVC er klart brudt. 

</slutningen>

Kantede undlader at Bootstrap i IE9

Jeg har leget med Angular.js til sidst lange mens og for livet af mig, Jeg kunne ikke få min Kantede apps at lancere i IE9.  De alle fungerer fint i IE11 men IE9 ville bare vise krøllede klammeparenteser og lignende bits.

Jeg søgte rundt og kunne ikke finde nogen klager over hans problem.  Det virkede fint i Chrome, IE11, bare ikke IE9.

Jeg blev smidt ud af det faktum, at IE konsollen gav mig fejl som denne:

SEC7111: HTTPS sikkerhed er kompromitteret af res://ieframe.dll/forbidframing.htm

Denne fejl havde jeg tænkte der var nogle problemer med at downloade den kantede eller andre biblioteker, som jeg havde brug for.  Da det viser sig, Dette var ikke spørgsmålet.

Af poking omkring internets, Jeg endelig fandt ud af at den sætning, jeg havde brug for at søge efter var "bootstrap" og at det virkede som de bootstrapping var svigtende.  I sidste ende, mit problem var at jeg havde pyntet min <HTML> Tag med attributten ng-app, som i:

<HTML-ng-app = "MatrixApp">

Godt, det virkede for IE9.  I stedet, Jeg har pakket alle resten af HTML i den <kroppen> inde i en div og referencer MatrixApp måde.

Problem løst.

Forhåbentlig sparer dette nogen nogle sorg.

</slutningen>

Oprettelse af brugerdefinerede SharePoint formularer uden en masterside

Min kollega, Lauren Jones, skrev en flot gennemgang om Sådan oprettes en brugerdefineret formular til dataindtastning ved hjælp af SharePoint Designer.  Det er ikke ligefrem "nyt under solen", men der er en smule af twist.  I hendes ord:

Oprettelse af brugerdefinerede formularer er ligetil at gøre i SharePoint Designer, navigere til din liste og på båndet menuen Vælg ' listeformular’ og oprette en ny formularskabelon.

Dette fungerer godt, hvis du ønsker din formular skal knyttes til du mastersiden, Men hvad nu hvis du har brug ved at oprette en formular, der er i et popupvindue eller standalone uden SharePoint chrome. Jeg havde præcis dette brugstilfælde, Jeg ønskede til brugerdefineret stil en formular og derefter bruge denne form i en popup div inline inden for en side.

Fortvivl ikke, der er en måde at gøre dette, der ikke er så intuitiv men forholdsvis let at opnå.

Du kan læse alle detaljerne her: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=55&rtitle=customforms&rsrouce=pgblog og du kan se det i aktion ved at klikke på linket "Kontakt os for mere information" på nogen af tjenesterne på tjenestesiden i vores Big Apple SharePoint-websted (http://www.bigapplesharepoint.com/services).

Lauren skriver masser af gode ting om UX og branding.  Du kan se mere her skrive her: http://www.bigapplesharepoint.com/team?showExpertName=Lauren%20Jones.

</slutningen>

Distraherende Design og beruset på funktion Coolaid

Min kollega, Lauren Jones (https://twitter.com/laurenjones02) skrev en kort artikel taler om, hvordan alt for komplekse SP rollouts er meget hårdt på slutbrugerne.  Det er slags indlysende, på en måde, men det er let for mig at sige, at efter jeg har dirigeret mange komplekse rollouts ting til uforberedt slutbrugere gennem årene.

Her ovre er nøglen ' graf:

Fem år siden, Når jeg rullede ud SharePoint til en organisation for første gang med et primært mål for at blive samarbejdsplatformen og erstatte share drev, vi også indført sociale og nyheds-feeds via RSS, Mine websteder og profiler, og folksonomy tagging. Unødvendigt at sige, Det var en masse for slutbrugere at vedtage i et slag. Mens der var succes med adoption omkring dokumentstyring og profiler, RSS og tagging var mindre vellykket, og dette skyldtes virkelig ændre ledelseskommunikation og uddannelse. Vi kunne ikke gøre det på én gang. At tage mindre er mere tilgang og frigive funktionalitet i faser er nemmere for slutbrugerne at acceptere og vedtage.

Denne artikel minder om en anden bit jeg læste ved Kris Gale relateret til Hyles indslag placere, “Den ene koste ingeniører og produktchefer overveje ikke.”

Hvis du har en rædselshistorie eller succeshistorie at dele, Jeg håber du vil gøre det i kommentarer på webstedet Big Apple.

</slutningen>

Ugentlige Roundup – Juli 13, 2014

Jeg for at xpost dette her i sidste weekenden. 

Her er den 3RD artikel i en serie, hvor jeg skriver om blog-indlæg og online artikler, der var særligt interessant for mig i den sidste uge eller deromkring.  Denne uges post i serien fremhæver to CodePlex projekter for en potentiel InfoPath udskiftning og administration af tilladelser med SharePoint, nyheder om satellitter, endnu en anden JavaScript ramme og en hilsen til Ada Babbage og hendes rolle i computing historie.

Du kan læse det her: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=93&rsource=pgblog&rtitle=roundup

</slutningen>

Se CAML forespørgsler i realtid med ULS Viewer

Min kollega, Ashsih Patel, skrev op en nice walk-through der beskriver, hvordan at se CAML bag forskellige SP forespørgsler, der sker i løbet af business i realtid ved hjælp af ULS fremviser.

Her er intro:

Du har nogensinde ønsket at vide hvad CAML forespørgsler der udføres af SharePoint Server?

Godt, for fejlfinding og læring formål, Det er ikke en dårlig idé. Efter alt, SQL Profiler har hjulpet os fejlfinde en masse spørgsmål.

Der kan være produkter derude, men jeg regnede ud en måde at gøre det uden at bruge ekstra bukke! Og her er det...

Du kan læse det hele her: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=68&rsource=pgblog&rtitle=caml.

</slutningen>