Feilsøking tips For kantete direktiver (Eller, Lære å elske bindestreker Over igjen)

Jeg har et par apps som gjør $http.get() samtaler og jeg ønsket å kunne vise en pent formatert feilmelding med stygge feildetaljer skjult, men tilgjengelig.  I utgangspunktet, Dette:

image

Og hvis du klikker feil, de ser mer informasjon:

image

Enkle ting.  Siden nøyaktig samme potensielle feil kan vises i skjermbildet administrative som sluttbrukeren skjermen, det tydelig kalt for en egendefinert kantete direktivet.  JEG  fant dette enestående serien artikler (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) av stort Dan Wahlin.  Etter hans råd, Jeg raskt opprettet en <Hei, verden> direktivet og gått videre min mer komplekse feil skjerm nal. Jeg løp inn litt problemer med mer komplekse direktivet.  Lykkelig, slags tilfeldigvis, Jeg hadde fortalt WebStorm (redaktøren jeg bruker disse dager) at JS filen var en kantete fil og det hjalp meg finne ut problemet.  Dette er koden for direktivet selv:

Angular.Module("CDLApp").direktivet("generalCdlErrorHandler", funksjonen() {

avkastning {
begrense: "E",
Erstatt: sann,

omfang: {
retrieveLastConfigurationError: "&"
},

mal:
'<div class = "varsle varsel-fare" rolle = "varsle" ng-init = "doShowExpandedErrorDetails = true" ng-show = "retrieveLastConfigurationError()">' +
"Det var en jeg/o feil eller annen feil. Dette skjer vanligvis fordi konfigurasjonsfilen data ikke kunne ' +
"funnet eller konfigurasjonsfilen inneholder unøyaktig informasjon (som refererer til et dokumentbibliotek ' +
"det finnes ikke).' +
' <br />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <et href = "#" NG-klikk = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klikk her for å skjule detaljer." +
' </en>: ' +
' <br />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <br />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <et href = "#" NG-klikk = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klikk her for å vise informasjon om feilen." +
' </en>' +
' </div>' +
'</div>'
};
});

I utgangspunktet, Jeg oppretter et nytt element kalt en "generalCdlErrorHandler".  Trenger en funksjon kalt retrieveLastConfigurationError og som håndteres i omfang-objektet.  Jeg kunne sannsynligvis ha bare brukt det overordnede området, men som føles lat.  Hvis noen tror burde jeg ha gjort det, Jeg ville elske å høre om det i kommentarfeltet.

Dette var alle fin, men jeg får ikke noe.  Ingen feil dukket opp i konsollen (minst én gang fast jeg alle sx feil jeg opprettet underveis).  Jeg bare fikk noen utdata fra direktivet.  Jeg gikk og lagt noen statisk tekst før direktivet ng-show og jeg * har * komme som. Dette gjorde meg til å tenke at kanskje direktivet ikke lov implisitt opprette nye vars som "doShowExpandedErrorDetails" eller har en "ng-init" der inne. 

Jeg gikk tilbake til HTML for å se hvis jeg hadde en type og denne gangen WebStorm hjalp meg ut.  Jeg hadde passert i funksjonen retrieveLastConfigurationError som dette:

<Generelt-cdl-feil-behandleren retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Generelt-cdl-feil-behandleren>

Men det virkelig nødvendig å være dette:

<Generelt-cdl-feil-behandleren hente-siste-konfigurasjon-error = "CDLController.retrieveLastConfigurationError()">
</Generelt-cdl-feil-behandleren>

WebStorm var smart nok å vite at det måtte være bindestrek.  Hvis det ikke hadde gitt det hintet, Jeg ville trolig være fortsatt feilsøking dette Smil.  Moro ganger!

Trikset er dette: ikke bare er direktiv elementnavnet bindestrek, så er alle attributter du legge til.  Når jeg lagt bindestreker, alt fungerte bra.  Dan tutorial kom til å bruke korte enkelt navn, så jeg ikke gjorde tilkoblingen.

Håpe dette hjelper noen.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

IE9 Ikke liker det når du tar en snarvei med din <utstrekningen> Tags

Jeg har falt i en dårlig vane av benytter Chrome hele tiden.  Det er "dårlig" fordi ting jeg utvikle virkelig trenger å kjøre på en rekke andre weblesere, inkludert, Dessverre IE8.  Bærbare arbeidsdatamaskinen har IE9 standard uansett grunn) og jeg bare gjorde en rask se hvilke ting så som og... det var ikke pen.  For eksempel:

image

Har * skal * å se slik ut:

image

 

Ikke bare var det av, men min klikkhendelser ikke var skyting.  (De fleste av dem, Allikevel).

Visuelt, det så ut som ting begynte å gå av skinnene nær koblingen "Avansert Setup".  Jeg gravde i den delen av HTML og funnet at jeg hadde denne linjen:

<span class = "glyphicon glyphicon-nytt vindu" />

Det virker som tillatte syntaks ("Chrome versjon 40.02214.94 m"er fin med det.). Jeg gikk og endret det likevel, som vist:

<span class = "glyphicon glyphicon-nytt vindu"></utstrekningen>

Som bestemt den.

Slike en liten liten ting forårsaket slikt stort rot av en skjerm.  Moro ganger.

Denne skjedd å være en rask Fiks, men det er også typen ting som bare blir ryggraden justert når du ser den.  Det er over 500 linjer med HTML i denne lille admin-funksjonen, og du ønsker bare ikke å finne deg selv grave blant de ugress, noensinne Smil.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

HTTP 406 Feil ved kantete $http.get mot SharePoint resten endepunkt

Oppdateringen: Marc AD ndersson påpekt denne store stykke informasjon: http://blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Det forklarer mye :).

Det kan være verste tittelen på et blogginnlegg noensinne! Anyhoo.

Jeg vanligvis gjør alle mine prototyping mot en O365-forekomst. Jeg har min personlige forekomst slik at jeg ikke trenger å være bekymret påvirker andre. Som en side-Husk når vi kaller båret rundt virtuelle maskiner på vår bærbare med MOSS-SQL Server, IIS, bestemme Hyper-V vs. VMWare? Anyhoo...

Jeg hadde utviklet en app med Angular i dette miljøet som gjør, blant annet, Dette:

$http.Get(serverUrl)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funksjonen(theResult) {

// og så videre og så skum

Dette arbeidet rettferdig fin i to forskjellige SharePoint online miljøer. Men, Når min kollega portet den til en Cloudshare, Han fikk en HTTP 406 feil (som var første gang jeg noen gang fikk den, så... yay, jeg tror det). Vi gjorde litt research og la merke til at overskriften "Godta" var av. SharePoint online var helt fornøyd med:

Godta: programmet/json

Men cloudshare forekomsten (SP er på prem, vert for en virtuell server) ville klassiske "odata = utførlig" lagt i tillegg:

Godta: programmet/json;OData = detaljert

Å fastsette det, vi lagt til overskriften slik:

var config = {overskrifter: {
'Akseptere': "program/json;OData = utførlig '
}
};

$http.Get(serverUrl,config)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funksjonen(theResult) {

// og så videre og så skum

Som ble kvitt den 406, men det også endret formatet på svaret. Det var mer... detaljert. (haha!) Flere endringer er nødvendig og her er resultatet:

var config = {overskrifter: {
'Akseptere': "program/json;OData = utførlig '
}
};

$http.Get(serverUrl,config)
.suksess(funksjonen(data, status, overskrifter, config) {

var getLinksResponse = data;

getLinksResponse.d.results.forEach(funksjonen(theResult) {

// og så videre og så skum

Dette bare omgjort til en 30 minutt problem for oss, så vi lucked ut. Forhåpentligvis finner noen dette nyttig.

</slutten>

Slik gjør du det: Aktiver flere kantete SharePoint-webdeler på samme side

Denne bloggen innlegg beskriver hvordan du kan ha flere Angular.js basert SharePoint-webdeler (referert via en webdel for innholdsredigering) på samme side. Jeg kaller en webdel for innholdsredigering (CEWP) som refererer til JavaScript bygget med Angular.js rammen en "kantete-webdel."

Angular's bootstrap prosessen er superenkelt og omtrent alle eksempel du finner på internets går noe slikt:

<HTML ng-app = 'myApp'>

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

</HTML>

Dette bryter ned, men, Hvis du vil aktivere flere CEWP som representerer flere kantete webdeler på samme side. Angular vil automatisk bootstrap mot direktivet for første ng-app det finner – minst i kantete versjon 1.3.6. Løsningen er ganske enkel-bootstrap manuelt koden i stedet. Ovennevnte nå endres til noe som dette:

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

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

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

I utgangspunktet, istedet for benytter ng-app på elementet for å gjøre din bootstrapping, du klapse en ID på dette elementet. Deretter, Bruk inn bootstrap() metoden på kantete selv kontrollere bootstrapping behandle under kjøring. Jeg har testet dette med tre forskjellige kantete webdeler på samme side og det fungerer en sjarm.

</slutten>

undefinedAbonner på bloggen min.

Følg meg på Twitter på http://www.twitter.com/pagalvin

New Jersey motorkjøretøyer kommisjonen tar et annet offer

Så, min sønn er litt forsinket å få sin kjøring tillatelse.  I går, midten av morgenen, Han lastebiler til Oakland NJ å få det.  Han får det, Fyll ut hans papirer er utstedt en unstamped tillatelse og lærer at han nå gå til en annen MVC plasseringen sin synsundersøkelse.  Fordi, Angivelig, dyktige øye testere leve ikke bare hvor som helst, så NJ MVC må gå hvor de er.  Eller, kanskje er det fordi de følger en Hamiltonian filosofi for konsolidering?  Mye som Hamilton følte økonomiske og industri konsolidering var kritisk til fremtidige økonomiske styrken av republikken, kanskje føler NJ MVC de trenger konsolidere øye testing talent for fremtiden styrken av NJ MVC?  Kanskje er det en del av en uutsigelige plan?  Akk, Jeg har bare spørsmål om dette emnet og ingen svar. 

Følgende Oakland råd, kone og sønn lastebil vei ned til Lodi, NJ med unstamped tillatelse til Lodi.  Lodi kan ha verste parkering av helst NJ MVC.  Og, siden de også vert noen av knappe ennå ettertraktede svært øye maskiner og øye testing fagfolk, De tiltrekker anmodere av alle slag, gråtoner, utdanning og gawkers.  Min sønn arbeider seg gjennom labyrinten av linjer og instruksjoner "never-look-them-in-the-eye" NJ MVC fagfolk og endelig kommer til øyet testing linje.  Nå lærer de at personen som Oakland gjort en feil på unstamped tillatelsen.  Han tastet mis personnummer, å sette en en "8" i stedet for "2" i ett siffer.  NJ DMV personen visste dette fordi da hun trakk opp at feil SS# i datamaskinen, Det viste min Sønns navn.  Kone og sønn sier, "oh, Det er feil nummer, du trenger en '2' det i stedet for en "8." "  Hva mange, kanskje hver fair-tenkende person forventer på dette punktet er for den NJ MVC bare rette hvor de bare inn i datamaskinen.  Ha! Tosk!  nei, i stedet ble han bedt om å gitt sin trygd kort.  La oss komme bort fra emnet for et øyeblikk og vurdere at for å få unstamped tillatelsen i første omgang, Han hadde allerede gitt oss pass samt en ny Jersey fødselsattest og brev skrevet til ham på hans hjemmeadresse.   Moren er med ham, deler hans navn, hans adresse, sin høyde (men dessverre, ikke hans smak i sci-fi filmer) ... du, min sønn er godt og virkelig identifiserte som liv lenge bosatt av disse USA og faktisk, New Jersey selv ved andre tiltak du kan forestille deg.  Hvis NJ MVC personen ville ha bare løst feilen Oakland personen gjort, datamaskinen vil ha trukket opp min sønns informasjon og det ville vært slutten av historien.  Men igjen, tosk!  De kan ikke gjøre det. I stedet, NJ MVC insistere på trygd kort nå. 

Så, kone og sønn dra hjem å få det og retur.  Og til slutt, han får sin tillatelse.

Det er tre ulike turer til NJ MVC i en dag.  Å få sin tillatelse.  Det tok nesten 6 timer fra start til slutt.  Dette er min sønns introduksjon til kjøring i Garden State.

NJ MVC er klart brutt. 

</slutten>

Kantete mislykkes bootstrap i IE9

Jeg har spilt med Angular.js siste lenge og for livet av meg, Jeg kunne ikke få min kantete programmer å lansere i IE9.  Alle fungerer fint i IE11 men IE9 vil bare vise klammeparenteser og lignende biter.

Jeg søkte rundt og kunne ikke finne noen klager om hans problem.  Den arbeidet fin inne Chrome, IE11, bare ikke IE9.

Jeg ble kastet ut av det faktum at IE konsollen ga meg feil som dette:

SEC7111: HTTPS sikkerhet er kompromittert av res://ieframe.dll/forbidframing.htm

Denne feilen fikk meg tenking det var en problem dataoverfører vinkelgiret eller andre biblioteker som jeg trengte.  Som det viser seg, Dette var ikke problemet.

Ved poking rundt internets, Jeg endelig fant ut at uttrykket jeg måtte søke etter var "bootstrap" og at det virket som bootstrapping var sviktende.  Til slutt, mitt problem var at jeg hadde ukontrollert min <HTML> kode med attributtet ng-app, som i:

<HTML ng-app = "MatrixApp">

Brønnen, det gjorde ikke arbeide for IE9.  I stedet, Jeg pakket resten av HTML i den <kroppen> inne i en div og referanser MatrixApp måten.

Problem løst.

Forhåpentligvis sparer dette noen litt sorg.

</slutten>

Opprette egendefinerte SharePoint skjemaer uten et hoveddokument

Min kollega, Lauren Jones, skrev en fin gjennomgang på hvordan å lage et egendefinert skjema for dataregistrering ved hjelp av SharePoint Designer.  Det er ikke akkurat "nytt under solen" men det er litt av vri.  I hennes ord:

Opprette egendefinerte skjemaer er rett frem i SharePoint Designer, navigere i listen og bånd meny SELECT ' listeskjema’ og opprette en ny skjemamal.

Dette fungerer bra hvis du vil at skjemaet festes til du hoveddokumentet, men hva hvis du har bruk ved å lage et skjema som er i et popup-vindu eller frittstående uten SharePoint krom. Jeg hadde akkurat denne brukstilfelle, Jeg ville til egendefinert stil et skjema og deretter bruke skjemaet i en populær div innebygd på en side.

Fortvil ikke, Det er en måte å gjøre dette som ikke er så intuitivt men ganske enkelt å oppnå.

Du kan lese alle detaljene her: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=55&rtitle=customforms&rsrouce=pgblog og du kan se den i aksjon ved å klikke på "kontakt oss for mer informasjon" på noen av tjenestene på Tjenestesiden til våre Big Apple SharePoint-område (http://www.bigapplesharepoint.com/services).

Lauren skriver mye bra på UX og merkevarebygging.  Du kan se mer her skriver her: http://www.bigapplesharepoint.com/team?showExpertName=Lauren%20Jones.

</slutten>

Forstyrrende Design og drukket på funksjonen Coolaid

Min kollega, Lauren Jones (https://twitter.com/laurenjones02) skrev en kort artikkel snakker om hvordan altfor komplisert SP rollouts er veldig hardt på sluttbrukere.  Det er slags åpenbart, på en måte, men det er lett for meg å si at etter jeg har ledet en rekke komplekse rollouts ting til uforberedt sluttbrukere gjennom årene.

Her er nøkkelen "graf:

Fem år siden, Når jeg rullet ut SharePoint til en organisasjon for første gang med hovedmål om å bli samarbeidet plattformen og erstatte dele disker, vi også introdusert sosiale og nyhetsfeeder gjennom RSS, Mine områder og profiler, og folksonomy merking. Unødvendig å si, Dette var mye for sluttbrukere å vedta i en razzia. Mens det var suksess med adopsjon rundt dokumentbehandling og profiler, RSS og merking var mindre vellykket og dette var virkelig endre management kommunikasjon og opplæring. Vi kunne ikke gjøre det på en gang. Tar mindre er mer tilnærming og slippe funksjonaliteten i faser er enklere for sluttbrukerne å akseptere og oppta å.

Denne artikkelen minner om en annen bit jeg lest av Kris Gale relatert til Yammers funksjonssett, “Den koster ingeniører og produktsjefer vurdere ikke.”

Hvis du har en skrekkhistorie eller suksesshistorie å dele, Jeg håper du vil gjøre det i kommentarer på webområdet Big Apple.

</slutten>

Ukentlig Roundup – Juli 13, 2014

Jeg for å xpost her de siste helgen. 

Her er den 3RD artikkel i en serie hvor jeg skriver blogginnlegg og elektroniske artikler som var spesielt interessant for meg i den siste uken eller så.  Denne ukens oppføringen i serien fremhever to CodePlex prosjekter for potensielle InfoPath erstatning og administrere tillatelser med SharePoint, nyheter om satellitter, ennå en annen JavaScript rammeverk og et nikk til Ada Babbage og hennes rolle i databehandling historie.

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

</slutten>

Vis CAML spørringer i sanntid med ULS Viewer

Min kollega, Ashsih Patel, skrev opp en fin gjennomgang om hvordan å se CAML bak ulike SP spørringer som skjer i forretningsvirksomhet i sanntid med ULS-visningsprogrammet.

Her er intro:

Du ønske å vite hvilke CAML søk utføres av SharePoint Server?

Brønnen, for feilsøking og lære formål, Det er ikke en dårlig idé. når alt kommer til alt, SQL Profiler har hjulpet oss med feilsøking mange problemer.

Det kan være produkter der ute, men jeg fant ut en måte å gjøre det uten å bruke ekstra dollar! Og her er...

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

</slutten>