Felsökning tips för kantiga direktiven (Eller, Lära sig att älska bindestreck över igen)

Jag har ett par program att göra $http.get() samtal och jag ville kunna visa ett snyggt formaterat meddelande med fula fel Detaljer dolda, men tillgänglig.  I princip, Detta:

image

Och sedan om användaren klickar på fel, de ser mer information:

image

Enkla saker.  Eftersom exakt samma potentiella fel kan visas i den administrativa skärmen samt slutanvändaren skärmen, Det kallas klart till anpassade kantiga direktiv.  JAG  hittade den här enastående serie artiklar (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) av stort Dan Wahlin.  Efter hans råd, Jag har mycket snabbt skapat ett <Hello-world> direktiv och flyttade till min mer komplicerade fel display gummiskrapa. Jag sprang på lite problem med detta mer komplexa direktiv.  Glatt, typ av slump, Jag hade sagt WebStorm (redaktör jag använder dessa dagar) att filen JS var en kantig och det hjälpte mig räkna ut frågan.  Detta är koden för själva direktivet:

Angular.module("CDLApp").direktiv("generalCdlErrorHandler", funktionen() {

återvändande {
begränsa: "E",
Ersätt: sant,

omfattning: {
retrieveLastConfigurationError: "&"
},

mall:
'<div class = "alert alert-fara" roll = "varna" ng-init = "doShowExpandedErrorDetails = true" ng-show = "retrieveLastConfigurationError()">' +
"Det fanns en I/O fel eller andra fel. Detta händer oftast eftersom konfigurationsfilen data inte kunde " +
"hittade eller konfigurationsfilen innehåller felaktig information (som refererar till ett dokumentbibliotek " +
"det finns inte).' +
' <br />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <en href = "#" ng-klicka = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klicka här om du vill dölja detaljer." +
' </en>: ' +
' <br />' +
' <Pre>{{retrieveLastConfigurationError() | JSON}}</Pre>' +
' <br />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <en href = "#" ng-klicka = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Klicka här för att expandera felinformation." +
' </en>' +
' </div>' +
'</div>'
};
});

I princip, Jag skapar ett nytt inslag som kallas en "generalCdlErrorHandler".  Den behöver åtkomst till en funktion som kallas retrieveLastConfigurationError och som hanteras i objektet räckvidd.  Jag kunde nog ha bara använt förälderns räckvidd, men det känns lata.  Om någon tycker att jag borde ha gjort det, Jag skulle älska att höra om det i kommentarerna.

Detta var allt bra, men jag var inte att få något.  Inga fel som dök upp i konsolen (minst en gång fast jag alla sx fel jag skapat på vägen).  Jag helt enkelt få inte några utdata från direktivet.  Jag gick och La lite statisk text innan direktivet ng-show och jag * gjorde * få som. Detta fick mig att tänka att direktivet kanske inte var tillåtet att implicit skapar nya vars som "doShowExpandedErrorDetails" eller en "ng-init" där. 

Jag gick tillbaka in i HTML att se om jag hade en typ och den här gången WebStorm hjälpte mig.  Jag hade förbi i funktionen retrieveLastConfigurationError som denna:

<General-cdl-fel-handler retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</General-cdl-fel-handler>

Men det behövs verkligen för att detta:

<General-cdl-fel-handler Hämta-sista-konfiguration-error = "CDLController.retrieveLastConfigurationError()">
</General-cdl-fel-handler>

WebStorm var smart nog att veta att det hade att avstavas.  Om det inte hade lämnat den antydan, Jag skulle förmodligen fortfarande felsökning av detta Leende.  Kul gånger!

Tricket är detta: inte bara avstavats direktiv elementnamnet, så är alla attribut som lägger du till.  När jag lagt bindestreck, allt fungerade bra.  Dan's tutorial råkade använda korta enda namn, så jag gjorde inte anslutningen.

Hoppas detta hjälper någon.

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

IE9 Verkligen inte gillar det när du tar en genväg med din <Spänn> Märken

Jag har hamnat i en dålig vana att använda Chrome hela tiden.  Det är "dåliga" eftersom de grejer jag utveckla verkligen måste köras på en massa andra webbläsare, inklusive, Tyvärr IE8.  Min arbete laptop har IE9 standard oavsett orsak) och jag gjorde bara en snabb check till se vad saker såg ut som och... det var inte vackra.  Till exempel:

image

Har * tänkt * se ut så här:

image

 

Var det inte bara av, men min klicka händelser var inte bränning.  (De flesta av dem, Hur som helst).

Visuellt, det såg ut som saker började gå ur nära länken "Avancerad installation".  Jag grävde i den del av HTML och fann att jag hade denna linje:

<span class = "glyphicon glyphicon-ny-fönster" />

Det verkar vara tillåtna syntax ("Chrome version 40.02214.94 m"är bra med det.). Jag gick och ändrade det ändå, som visas:

<span class = "glyphicon glyphicon-ny-fönster"></Spänn>

Som fixade det.

Sådan en liten liten sak orsakade sådan stor oreda på en skärm.  Kul gånger.

Det råkade vara en quick fix, men det är också sånt som bara får din ryggrad feljusterade när man ser den.  Det finns över 500 rader av HTML i denna lilla admin funktion och du vill bara inte hitta dig själv gräva bland dessa ogräs, någonsin Leende.

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

HTTP 406 Fel när du använder kantiga $http.get mot SharePoint resten slutpunkter

Uppdatering: Marc AD ndersson påpekade detta stor bit av information: http://blogs.Office.com/2014/08/13/JSON-Light-support-rest-SharePoint-API-Released/. Som förklarar en hel del :).

Det kan vara den värsta titeln på ett blogginlägg någonsin! Anyhoo.

Jag gör alla min prototyping mot en O365-instans. Jag har min personliga instans så att jag slipper vara orolig som påverkar någon annan. Som en parentes – kom ihåg när vi kallar burna runt virtuella maskiner på våra bärbara datorer med MOSS-SQL Server, IIS, beslutande Hyper-V vs. VMWare? Hur som helst...

Jag hade utvecklat en app som använder vinkelformig i denna miljö som gör, bland annat, Detta:

$http.get(serverUrl)
.framgång(funktionen(data, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktionen(Resultatet) {

// och så vidare och så skum

Detta fungerade bara bra i två olika SharePoint online miljöer. Men, När min kollega portat det till en Cloudshare-instans, Han var att få en HTTP 406 fel (vilket var första gången jag någonsin fått det, så... yay, Tror jag). Vi gjorde lite forskning och märkte att "Acceptera" huvudet var off. SharePoint online var helt nöjd med:

Acceptera: Application/json

Utom den cloudshare instansen (som är SP på prem, värd i en virtual server) ville ha klassiskt "odata = verbose" tillagda i:

Acceptera: Application/json;OData = verbose

Att fixa det, Vi lade till i huvudet som sådan:

var config = {headers: {
"Acceptera": ' application/json;OData = verbose "
}
};

$http.get(serverUrl,config)
.framgång(funktionen(data, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funktionen(Resultatet) {

// och så vidare och så skum

Som fick bort den 406, men det ändras även formatet för svaret. Det var mer... verbose. (haha!) Fler ändringar var nödvändiga och här är slutresultatet:

var config = {headers: {
"Acceptera": ' application/json;OData = verbose "
}
};

$http.get(serverUrl,config)
.framgång(funktionen(data, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.d.results.forEach(funktionen(Resultatet) {

// och så vidare och så skum

Detta bara förvandlats till en 30 minut problem för oss, så vi lucked ut. Förhoppningsvis hittar någon detta användbara.

</slutet>

Anvisningar: Aktivera flera kantiga SharePoint-webbdelar på samma sida

Denna blogg inlägg beskriver hur du kan ha flera Angular.js baserade SharePoint-webbdelar (refereras via en webbdelen Innehållsredigeraren) på samma sida. Jag ringer en webbdelen Innehållsredigeraren (CEWP) som refererar till JavaScript byggt med Angular.js ramen en "kantiga webbdel."

Vinkelformigs bootstrap processen är super lätt och bara om alla exempel du hittar på internets går ungefär så här:

<HTML-ng-app = "MittProgram">

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

</HTML>

Detta bryter ner, men, Om du vill aktivera flera CEWP som representerar flera kantiga webbdelar på samma sida. Vinkelformig kommer bara automatiskt starta mot det första direktivet om ng-app det fynd – åtminstone från och med kantiga version 1.3.6. Lösningen är ganska enkel – starta manuellt din kod i stället. Ovanstående nu ändras till något sånt här:

<organ>
<d
IV id =”bootstrapHere” ng-controller =”myController som theController”>
<bla /><bla /><bla />
</div>
</organ>

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

<skript>
Angular.bootstrap(Angular.element(document.getElementById(“bootstrapHere”)),["MittProgram"]);
</skript>

I princip, istället för att använda ng-app på elementet göra din bootstrapping, du slap ett ID på elementet. Sedan, använda bootstrap() metoden på kantiga själv styra den bootstrapping bearbeta vid körning. Jag har testat detta med tre olika kantiga webbdelar på samma sida och det fungerar en charm.

</slutet>

undefinedPrenumerera på min blogg.

Följ mig på Twitter vid http://www.twitter.com/pagalvin

New Jersey motorfordon kommissionen tar ett annat offer

Så, min son är lite försenad att erhålla sitt körtillstånd.  Igår, i mitten av morgonen, Han lastbilar upp till Oakland NJ till få den.  Han får det, fyllningar i hans pappersarbete utfärdas ett ostämplat tillstånd och lär sig att han nu måste gå till en annan MVC läge att ta hans synundersökning.  Eftersom, Tydligen, högutbildade öga testare bor inte bara någonstans, så NJ MVC måste gå där talang är.  Eller, kanske är det därför de följer en Hamiltonsk filosofi av konsolidering?  Mycket som Hamilton kände finansiella och tillverkning konsolidering var kritiska till framtida ekonomiska styrka av Republiken, kanske känns NJ MVC de behöver konsolidera öga testning talang för framtida styrkan i NJ MVC?  Kanske är det en del av en outsäglig plan?  Tyvärr, Jag har bara frågor om detta ämne och inga svar. 

Följande Oakland s råd, Fru och son lastbil väg ner till Lodi, NJ med Lodi ostämplat tillståndet.  Lodi kan ha värsta parkering av helst NJ MVC.  Och, eftersom de också värd några av knappa ännu eftertraktade mycket öga testning maskiner och ögat testning yrkesverksamma, de locka supplikanter i alla ränder, nyanser, utbildning och gawkers.  Min son arbetar sig igenom labyrinten av linjer och anvisningarna av "never-look-them-in-the-eye" NJ MVC professionella och slutligen anländer ögat test linje.  Nu lär de sig att Oakland personen gjort ett misstag på ostämplat tillståndet.  Han knappat mis personnummer, att sätta en en "8" i stället för "2" i en av siffror.  Den NJ DMV personen visste detta eftersom när hon drog upp det fel SS# i datorn, den visar inte min sons namn.  Fru och son säger, "oh, Det är fel nummer, Det behöver du en "2" i stället för en "8." "  Vad många, kanske förväntar dig varenda rättvist sinnad person på denna punkt är för NJ MVC personen helt enkelt korrigera numret de just gått in i datorn.  Ha! Dåre!  Nej, i stället blev han ombedd att gett sin social trygghet kort.  Låt oss göra en utvikning för ett ögonblick och anser att för att få ostämplat tillståndet i första hand, han hade redan lämnat ett Amerikanskt pass samt ett New Jersey födelseattest och brev skrivet till honom på sin hemadress.   Hans mor är med honom, delar hans namn, hans adress, hans höjd (men tyvärr, inte hans smak i sci-fi filmer) ... du, min son är bra och verkligen identifierade som livet länge bosatt i dessa stater i USA och faktiskt, New Jersey sig genom åtgärder du kan tänka dig.  Om NJ MVC personen skulle ha helt enkelt fast misstaget som den Oakland personen gjort, datorn skulle har dragit upp min sons information och det skulle ha varit slutet på historien.  Men igen, dåre!  De kan inte göra det. I stället, NJ MVC insistera på en social trygghet kort nu. 

Så, Fru och son gå hem för att få det och avkastning.  Och till slut, han får sitt tillstånd.

Det är tre olika resor till NJ MVC i en dag.  För att få hans tillstånd.  Det tog nästan 6 timmar från början till slut.  Detta är min sons introduktion till körning i Garden State.

NJ MVC är tydligt bruten. 

</slutet>

Kantiga misslyckas att starta i IE9

Jag har spelat med Angular.js för sist långa samtidigt och för livet av mig, Jag kunde inte få min kantiga apps att lansera i IE9.  De alla fungerar bra i IE11 men IE9 skulle bara Visa klammerparenteser och liknande bitar.

Jag sökte runt och kunde inte hitta någon klaga på hans problem.  Det fungerade bra i Chrome, IE11, bara inte IE9.

Jag kastades av det faktum att konsolen IE gav mig fel så här:

SEC7111: HTTPS säkerhet äventyras av res://Ieframe.dll/forbidframing.htm

Detta fel hade jag tänka fanns vissa problem dataöverföring den kantiga eller andra bibliotek som jag behövde.  Som det visar sig, Detta var inte frågan.

Av peta runt internets, Slutligen fick jag veta att frasen jag behövde för att söka efter var "bootstrap" och att det verkade som den bootstrapping var inte.  I slutet, mitt problem var att jag hade dekorerat min <HTML> tagg med attributet ng-app, som i:

<HTML-ng-app = "MatrixApp">

Brunn, det fungerade för IE9.  I stället, Jag svepte alla resten av HTML i den <organ> inuti en div och referenser MatrixApp sätt.

Problemet löst.

Förhoppningsvis sparar detta någon lite sorg.

</slutet>

Skapa anpassade SharePoint former utan en huvudsida

Min kollega, Lauren Jones, skrev upp en fin genomgång om hur du skapar ett anpassat dataformulär med hjälp av SharePoint Designer.  Det är inte precis "nytt under solen" men det finns lite av twist.  I hennes ord:

Skapa anpassade formulär är rättfram i SharePoint Designer, Navigera till din lista och på band menyn Välj "listformulär’ och skapa nya formulärmallen.

Detta fungerar bra om du vill att formuläret ska bifogas du huvudsidan, men vad händer om du har användningsfallet för att skapa ett formulär som är i ett popup-fönster eller är fristående utan SharePoint krom. Jag hade exakt detta användningsfall, Jag ville till anpassad stil en form sedan använda formuläret i en popup div inline inom en sida.

Misströsta inte, Det finns ett sätt att göra detta som inte är så intuitivt men ganska lätt att åstadkomma.

Du kan läsa alla detaljer här: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=55&rtitle=customforms&rsrouce=pgblog och du kan se den i aktion genom att klicka på länken "kontakta oss för mer information" på någon av tjänsterna på tjänstsidan av våra Big Apple SharePoint-webbplats (http://www.bigapplesharepoint.com/services).

Lauren skriver massor av bra grejer på UX och branding.  Du kan se mer av här skriver här: http://www.bigapplesharepoint.com/team?showExpertName=Lauren%20Jones.

</slutet>

Störande Design och druckit på funktionen Coolaid

Min kollega, Lauren Jones (https://twitter.com/laurenjones02) skrev upp en kort artikel som talar om hur alltför komplexa SP utbyggnader är mycket svårt för slutanvändare.  Det är typ av uppenbart, på ett sätt, men det är lätt för mig att säga att efter jag har iscensatt en massa komplicerade utbyggnader av saker att oförberedd slutanvändare under åren.

Här är viktigaste "graf:

För fem år sedan, När jag rullade ut SharePoint till en organisation för den första tiden med ett primärt mål blir samarbetsplattformen och ersätta andel enheter, Vi införde också sociala och nyhetsflöden via RSS, Mina webbplatser och profiler, och folksonomy märkning. Onödigt att säga, Detta var mycket för slutanvändare att anta i ett svep. Det fanns framgång med antagande kring dokumenthantering och profiler, RSS och tagga var mindre framgångsrika och detta var verkligen change management kommunikation och utbildning. Vi kunde inte göra det på en gång. Ta mindre är mer strategi och frigöra funktionalitet i faser är lättare för användarna att acceptera och anta att.

Denna artikel påminner om en annan bit jag läste av Kris Gale relaterade till Yammers funktion, “Den kostar ingenjörer och produktchefer anser inte.”

Om du har en skräckhistoria eller framgångssaga att dela, Jag hoppas du kommer göra det i kommentarer på webbplatsen Big Apple.

</slutet>

Weekly Roundup – Juli 13, 2014

I för att xpost detta här under den gångna helgen. 

Här är den 3RD artikeln i en serie där jag skriver om blogginlägg och online artiklar som var särskilt intressant för mig under den senaste veckan eller så.  Denna veckas posten i serien belyser två CodePlex projekt för en potentiell InfoPath-ersättning och för att hantera behörigheter med SharePoint, nyheter om satelliter, ännu en annan JavaScript ram och en nick till Ada Babbage och hennes roll i datorvärlden historia.

Du kan läsa den här: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=93&rsource=pgblog&rtitle=roundup

</slutet>

Visa CAML frågor i realtid med ULS Viewer

Min kollega, Ashsih Patel, skrev upp en fin genomgång som beskriver hur man se CAML bakom olika SP frågor som hända näringsverksamhet i realtid med ULS viewer.

Här är intro:

Du har någonsin vill veta vad CAML frågor körs av SharePoint Server?

Brunn, för felsökning och lärande syfte, Det är inte en dålig idé. Trots allt, SQL Profiler har varit att hjälpa oss felsöka en hel del frågor.

Det kan finnas produkter där ute men jag listat ut ett sätt att göra det utan att spendera extra spänn! Och här är det...

Du kan läsa hela här: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=68&rsource=pgblog&rtitle=caml.

</slutet>