Oplossen van problemen Tip voor hoekige richtlijnen (Of, Leren om te houden van afbreekstreepjes helemaal opnieuw)

Ik heb een paar apps die make-$http.get() oproepen en ik wilde te kunnen laten zien een mooi opgemaakte foutmelding met lelijke foutdetails verborgen, maar toegankelijk.  In principe, Dit:

image

En dan als de gebruiker op de fout klikt, zij zien meer info:

image

Eenvoudige dingen.  Aangezien de exacte dezelfde potentiële fout kan worden weergegeven in het administratieve scherm evenals de eindgebruiker scherm, het duidelijk gevraagd om een aangepaste hoekige richtlijn.  IK  vond dit uitstekende serie van artikelen (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) door de grote Dan Wahlin.  Na zijn advies, Ik heb zeer snel gemaakt een <Hello-wereld> richtlijn en verhuisde naar mijn meer complexe fout display zuigrubbers schoon. Ik liep in een beetje moeite met deze meer complexe richtlijn.  Gelukkig, soort bij toeval, Ik had verteld WebStorm (de editor gebruik ik deze dagen) dat de JS-bestand een hoekige bestand was en het hielp me het probleem achterhalen.  Dit is de code voor de richtlijn zelf:

angular.module("CDLApp").richtlijn("generalCdlErrorHandler", functie() {

terugkeer {
beperken: "E",
vervangen: True,

toepassingsgebied: {
retrieveLastConfigurationError: "&"
},

sjabloon:
'<div class = "waarschuwen waarschuwing-gevaar" rol = "waarschuwen" ng-init = "doShowExpandedErrorDetails = true" ng-show "retrieveLastConfigurationError =()">' +
' Was er een I/O fout of andere fout. Dit gebeurt meestal omdat gegevens configuratiebestand kon niet worden ' +
' gevonden of het configuratiebestand bevat onjuiste informatie (zoals verwijzen naar een documentbibliotheek ' +
' bestaat niet).' +
' <BR />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <een href = "#" ng-Klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Klik hier om te verbergen van details.' +
' </een>: ' +
' <BR />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <BR />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <een href = "#" ng-Klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Klik hier om uit te breiden foutdetails.' +
' </een>' +
' </div>' +
'</div>'
};
});

In principe, Ik ben het creëren van een nieuw element genaamd een "generalCdlErrorHandler".  Het moet toegang tot een functie genaamd retrieveLastConfigurationError en dat wordt behandeld in het toepassingsgebied-object.  Ik zou kunnen waarschijnlijk hebben net gebruikt de bovenliggende toepassingsgebied, maar dat voelt lui.  Als iemand denkt dat moet ik hebben gedaan die, Ik zou graag horen over het in de commentaren.

Dit was allemaal prima, maar ik was niet om het even wat.  Geen fouten popped opwaarts in de console (ten minste eenmaal vaste ik alle sx fouten die ik heb gemaakt langs de weg).  Ik gewoon krijgen niet geen uitvoer uit de richtlijn.  Ik ging en voegde enkele statische tekst voordat de richtlijn ng-show en ik * heeft * dat.. Dit deed me denken dat misschien de richtlijn was niet toegestaan om te impliciet maken nieuwe vars zoals "doShowExpandedErrorDetails" of een "ng-init" hebben daar. 

Ik ging terug naar de HTML-code om te zien dat als ik had een type en deze keer WebStorm hielp me uit.  Ik had al passeren in de retrieveLastConfigurationError functie als dit:

<algemeen-cdl-fout-handler retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</algemeen-cdl-fout-handler>

Maar het echt nodig om deze:

<algemeen-cdl-fout-handler ophalen-laatste-configuratie-error = "CDLController.retrieveLastConfigurationError()">
</algemeen-cdl-fout-handler>

WebStorm was slim genoeg om te weten dat het moest worden afgebroken.  Als dit argument niet had aangeboden dat hint, Ik zou waarschijnlijk worden nog steeds problemen met dit Glimlach.  Leuke tijden!

De truc is dit: niet alleen is de richtlijn elementnaam afgebroken, zo zijn de kenmerken die u aan het toevoegen.  Zodra ik heb toegevoegd de afbreekstreepjes, alles werkte prima.  Dan de tutorial is er gebeurd met korte enkele namen gebruiken, dus ik heb niet de verbinding maken.

Hoop dat dit helpt iemand.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

IE9 Echt niet leuk wanneer u een kortere weg met neemt uw <span> Tags

Ik heb gevallen in een slechte gewoonte van het gebruik van Chrome aller tijden.  Het is "slecht" omdat de dingen die ik ontwikkel echt nodig om te draaien op een heleboel andere zwemvlies grazen, met inbegrip van, Helaas IE8.  Mijn werk laptop heeft IE9 standaard voor welke reden dan ook) en ik was gewoon te doen een snelle controle om te zien wat dingen zag als en... het was niet mooi.  Bijvoorbeeld:

image

Er * verondersteld * te laten uitzien als dit:

image

 

Niet alleen was het uit, maar mijn klikgebeurtenissen waren niet afvuren.  (De meeste van hen, Hoe dan ook).

Visueel, het leek dingen begon te gaan uit de rails in de buurt van de "Advanced Setup" link.  Ik gegraven in dat deel van de HTML-code en bleek dat deze regel:

<klasse omvatten "glyphicon glyphicon-new-window" = />

Dat lijkt toegestane syntaxis ("Chrome versie 40.02214.94 m"is prima met het). Ik ging en veranderde het in elk geval, zoals:

<span klasse = "glyphicon glyphicon-new-window"></span>

Dat bevestigde het.

Zo'n klein klein ding veroorzaakt zo'n enorme puinhoop van een scherm.  Leuke tijden.

Dit gebeurde om een snelle oplossing, maar het is ook het soort ding dat wordt enkel uw rug uit de uitlijning wanneer je het ziet.  Er zijn meer dan 500 regels voor HTML in deze weinig admin functie en je willen gewoon niet om jezelf onder die onkruid graven te vinden, ooit Glimlach.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

HTTP 406 Fout bij het gebruik van hoekige $http.get tegen SharePoint REST eindpunten

Update: Marc AD ndersson om erop te wijzen dit grote stuk van info: http://blogs.Office.com/2014/08/13/JSON-Light-Support-rest-SharePoint-API-Released/. Dat verklaart veel :).

Dat is misschien wel de ergste titel van een blogpost ooit! Hoe dan ook.

Ik meestal doe alle van mijn prototyping tegen een O365 exemplaar. Ik heb mijn persoonlijke exemplaar, zodat ik niet hoef te worden bezorgd op het gebied van iemand anders. Als een terzijde-Onthoud wanneer wij uitgevoerd rond virtuele machines op onze laptops met mos-SQL Server, IIS, beslissende Hyper-V vs. VMWare? Hoe dan ook...

Ik had ontwikkeld een app gebruikt Angular in deze omgeving die doet, onder andere, Dit:

$http.Get(serverUrl)
.succes(functie(gegevens, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(functie(theResult) {

// en zo verder en zo schuim

Dit werkte prima in twee verschillende SharePoint online omgevingen. Echter, Toen mijn collega het ported aan de aanleg van een Cloudshare, Hij kreeg een HTTP 406 fout (die was de eerste keer dat ik ooit kreeg die ene, dus... yay, Denk ik). We heb een beetje van het onderzoek en merkte dat de "Accept" header uitgeschakeld was. SharePoint online was perfect gelukkig met:

Accepteren: application/json

Behalve het cloudshare exemplaar (Wat is SP op prem, gehost op een virtuele server) wilde de klassieke "odata = verbose" toegevoegd ook:

Accepteren: application/json;odata = verbose

Om dat te bevestigen, Wij toegevoegd de kop als zodanig:

var config = {headers: {
'Accepteren': ' application/json;odata = verbose'
}
};

$http.Get(serverUrl,config)
.succes(functie(gegevens, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(functie(theResult) {

// en zo verder en zo schuim

Die verlost van de 406, maar het ook de indeling van de reactie gewijzigd. Het was meer... uitgebreide. (haha!) Meer veranderingen nodig waren en hier is het eindresultaat:

var config = {headers: {
'Accepteren': ' application/json;odata = verbose'
}
};

$http.Get(serverUrl,config)
.succes(functie(gegevens, status, headers, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(functie(theResult) {

// en zo verder en zo schuim

Dit alleen omgezet in een 30 minuut probleem voor ons, Dus wij lucked uit. Hopelijk vindt iemand dit nuttig.

</einde>

How-to: Inschakelen meerdere hoekige SharePoint-webonderdelen op dezelfde pagina

Deze blog posten wordt beschreven hoe u meerdere kan hebben Angular.js op basis van SharePoint-webonderdelen (waarnaar wordt verwezen via een webonderdeel Inhoudseditor) op dezelfde pagina. Ik roep een webonderdeel Inhoudseditor (CEWP) waarin wordt verwezen naar JavaScript gebouwd met behulp van het Angular.js kader een 'hoekige webonderdeel.'

Hoekige de bootstrap proces is super eenvoudig en zowat elke voorbeeld u op de internets vindt gaat iets als dit:

<HTML-ng-app = 'Mijntoep'>

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

</HTML>

Dit breekt, echter, Als u wilt inschakelen meerdere CEWP die meerdere hoekige webonderdelen op dezelfde pagina. Hoekige zal alleen automatisch bootstrap tegen de eerste ng-app richtlijn het gezochte – ten minste vanaf hoekige versie 1.3.6. De oplossing is vrij eenvoudig-handmatig bootstrap uw code in plaats daarvan. Het bovenstaande nu verandert in iets als dit:

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

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

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

In principe, in plaats van met behulp van ng-app op het element te doen uw bootstrappen, u klap een ID naar dat element. Vervolgens, Gebruik de bootstrap() methode op hoekige zelf om te controleren het bootstrappen verwerken op run-time. Ik heb dit met drie verschillende hoekige webonderdelen op dezelfde pagina getest en het werkt een charme.

</einde>

undefinedAbonneren op mijn blog.

Volg mij op Twitter op http://www.twitter.com/pagalvin

De New Jersey motorvoertuig Commissie neemt een ander slachtoffer

Dus, mijn zoon is een beetje te laat zijn drijvende vergunning verkrijgen.  Gisteren, in mid ochtend, Hij vrachtwagens tot Oakland NJ om het te krijgen.  Hij krijgt er, opvullingen uit zijn papierwerk een ongezegeld vergunning is afgegeven en leert dat hij nu moet gaan naar een ander MVC locatie om zijn oogtest te nemen.  Omdat, blijkbaar, hoogopgeleide oog testers leven niet enkel overal, NJ MVC moet dus om te gaan waar het talent is.  Of, Misschien is het omdat zij een Hamiltoniaan filosofie van consolidatie volgen?  Veel als Hamilton voelde financiële en productie consolidatie waren cruciaal voor de toekomstige economische kracht van de Republiek, misschien voelt NJ MVC dat ze oog talent voor de toekomstige sterkte van NJ MVC testen moeten consolideren?  Misschien is het onderdeel van een onuitsprekelijke plan?  Helaas, Ik heb alleen vragen over dit onderwerp en geen antwoorden. 

Volgende Oakland advies, vrouw en zoon vrachtwagen hun weg naar Lodi, NJ met de ongezegeld vergunning naar Lodi.  Lodi wellicht de ergste parking van elke locatie NJ MVC.  En, aangezien zij ook gastheer aantal schaarse nog begeerde zeer oog testen machines en oog testen professionals, ze trekken de aanvragers kunnen voor alle strepen, tinten, onderwijs en gawkers.  Mijn zoon werkt zijn manier door het labyrint van lijnen en aanwijzingen van de "never-look-them-in-the-eye" NJ MVC professionals en uiteindelijk komen aan op het oog testen lijn.  Ze leren nu dat de Oakland persoon een fout op de ongezegeld vergunning gemaakt.  Hij ingetoetst mis het sofi-nummer, zetten een een "8" in plaats van "2" in één van de cijfers.  De NJ DMV persoon wist dit omdat wanneer ze trok dat verkeerde SS# in de computer, het tonen niet mijn zoon naam.  Vrouw en zoon zeggen, "oh, dat is het verkeerde nummer, je moet er een '2' in plaats van een '8.""  Wat velen, misschien elke eerlijke minded persoon zou verwachten op dit punt is voor de NJ MVC persoon om te corrigeren gewoon het nummer die ze zojuist heeft ingevoerd op de computer.  Ha! Dwaas!  No, in plaats daarvan werd hij gevraagd om zijn sociale zekerheid kaart verstrekt.  Laten we dwaal af voor een ogenblik en overwegen die in de eerste plaats om de ongezegeld vergunning, Hij had al een paspoort, alsmede een New Jersey verleend, geboorte certificaat en brief geschreven aan hem op zijn huisadres.   Zijn moeder is met hem, deelt zijn naam, zijn adres, zijn hoogte (maar helaas, niet zijn smaak in sci-fi films) ... noem maar, mijn zoon is goed en echt geïdentificeerd als leven lang inwoner van deze Staten van de VS en inderdaad, New Jersey zelf door elke maatregel die u zich kunt voorstellen.  Als de NJ MVC persoon zou gewoon bevestigd hebben de fout die de Oakland persoon gemaakt, de computer zou hebben mijn zoon informatie trok en dat zou zijn geweest einde verhaal.  Maar opnieuw, dwaas!  Ze kunnen niet dat doen. In plaats daarvan, de NJ MVC aandringen op een socialezekerheidskaart nu. 

Dus, vrouw en zoon gaan thuis om het te krijgen en terug te keren.  En in het einde, Hij verkrijgt zijn vergunning.

Dat is drie verschillende reizen naar NJ MVC in één dag.  Om te krijgen zijn vergunning.  Het duurde bijna 6 uur van start tot finish.  Dit is mijn zoon inleiding met het rijden in de Garden State.

NJ MVC is duidelijk gebroken. 

</einde>

Hoekige mislukt om te bootstrappen in IE9

Ik been playing rond met Angular.js voor de laatste lang terwijl en voor het leven van me, Ik kon niet mijn hoekige apps te lanceren in IE9 krijgen.  Ze werken allemaal prima in IE11 maar IE9 zou enkel toont de accolades en soortgelijke bits.

Ik zocht rond en kon het niet vinden iemand klagen over zijn probleem.  Het werkte prima in Chrome, IE11, gewoon niet IE9.

Ik was gegooid uit door het feit dat de IE console gaf me fouten als dit:

SEC7111: HTTPS veiligheid in het gedrang komt door res://ieframe.dll/forbidframing.htm

Deze fout had me aan het denken was er één of ander probleem de hoekige downloaden of andere bibliotheken die ik nodig had.  Het blijkt dat, Dit was niet het probleem.

Door de internets rondneuzen, Ik heb eindelijk ontdekt dat de zin die ik nodig had om te zoeken naar "bootstrap" was en dat het leek alsof het bootstrappen was niet.  In het einde, mijn probleem was dat ik had versierd mijn <HTML> -tag waarvan het kenmerk ng-app, Als in:

<HTML-ng-app = "MatrixApp">

Goed, dat werkte niet voor IE9.  In plaats daarvan, Ik wikkelde de rest van de HTML-code in de <lichaam> binnen een div en verwijzingen MatrixApp die manier.

Probleem opgelost.

Hopelijk slaat dit iemand sommige verdriet.

</einde>

Maken van aangepaste SharePoint-formulieren zonder een basispagina

Mijn collega, Lauren Jones, een mooie walk-through schreef over het maken van een aangepast formulier voor gegevensinvoer met behulp van SharePoint Designer.  Dat is niet precies "nieuw onder de zon", maar er is een beetje twist.  In haar woorden:

Aangepaste formulieren maken is ongecompliceerd te doen in SharePoint Designer, Navigeer aan uw lijst en op de lint menu Selecteer ' lijstformulier’ en uw nieuwe formuliersjabloon maken.

Dit werkt goed als u wilt dat uw formulier bij te voegen u basispagina's, maar wat als u beschikt over de use-case voor het maken van een formulier dat is in een pop-upvenster of standalone zonder de SharePoint-chrome. Ik had precies deze use-case, Ik wilde aan aangepaste stijl een formulier dan gebruik maken van dat formulier in een popup div inline binnen een pagina.

Wanhoop niet, Er is een manier om dit te doen, die niet zo intuïtief is maar vrij makkelijk te bereiken.

U vindt alle details hier: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=55&rtitle=customforms&rsrouce=pgblog en u kunt het in actie zien door te klikken op de "Contacteer ons voor meer informatie" link op een van de diensten op de pagina services van onze Big Apple SharePoint-site (http://www.bigapplesharepoint.com/services).

Lauren schrijft veel goede dingen op UX en branding.  U kunt meer hier schrijven hier zien: http://www.bigapplesharepoint.com/team?showExpertName=Lauren%20Jones.

</einde>

Afleidende ontwerp en dronken op de functie Coolaid

Mijn collega, Lauren Jones (https://twitter.com/laurenjones02) schreef een kort artikel over hoe overdreven complexe SP uitrol zijn heel hard aan eindgebruikers.  Het is soort van duidelijk, op een manier, maar het is makkelijk voor mij om te zeggen dat nadat ik heb een HELEBOEL complexe uitrol van dingen aan onvoorbereid eindgebruikers georkestreerd door de jaren heen.

Hier is de sleutel ' grafiek:

Vijf jaar geleden, Wanneer ik SharePoint uitgerold naar een organisatie voor de eerste keer met een primair doel van steeds de collaboratieplatform en vervangen delen stations, We introduceerden ook sociale en nieuws-feeds via RSS, Mijn Sites en profielen, en Folksonomie tagging. Onnodig te zeggen, Dit was veel voor eindgebruikers te nemen in één keer. Terwijl er succes met goedkeuring rond documentbeheer en profielen was, RSS en tagging was minder succesvol en dit was echt te wijten aan de verandering beheer communicatie en opleiding. Wij kon het niet allemaal tegelijk. Nemen van de minder is meer aanpak en het vrijgeven van functionaliteit in fasen is gemakkelijker voor eindgebruikers te accepteren en aan te nemen.

Dit artikel doet denken aan een andere bit die ik gelezen door Kris Gale aan Yammer de eigenschapreeks gerelateerde, “De kosten van ingenieurs en productmanagers niet overwegen.”

Hebt u een horrorverhaal of succesverhaal te delen, Ik hoop dat u zult doen die in commentaren op de Big Apple site.

</einde>

Wekelijkse Roundup – Juli 13, 2014

I voor bij xpost dit hier in het afgelopen weekend. 

Hier is de 3RD artikel in een serie waar ik schrijf over blog posts en online artikelen die vooral interessant voor mij in de laatste week of zo waren.  Deze week vermelding in de serie hoogtepunten twee CodePlex projecten voor een potentiële InfoPath vervanging en voor het beheer van machtigingen met SharePoint, Nieuws over satellieten, nog een andere JavaScript-kader en een knipoog naar Ada Babbage en haar rol in de gegevensverwerking van geschiedenis.

U kunt het hier lezen: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=93&rsource=pgblog&rtitle=roundup

</einde>

Weergave CAML Query's in Real Time met ULS Viewer

Mijn collega, Ashsih Patel, schreef omhoog een aardige walk-through waarin wordt beschreven hoe om te zien de CAML achter verschillende SP query's die gebeuren in de loop van zaken in real-time met de ULS-viewer.

Hier is de intro:

U ooit willen weten welke CAML Query's worden uitgevoerd door SharePoint Server?

Goed, voor het oplossen van problemen met en leren van doel, het is niet een slecht idee. Eindelijk, SQL Profiler helpt ons een heleboel problemen oplossen.

Kan er producten die er maar ik bedacht een manier om het te doen zonder de uitgaven extra bucks! En hier is het...

U kunt hier het hele ding te lezen: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=68&rsource=pgblog&rtitle=caml.

</einde>