Archiv der Kategorie: Eckig

Installationsvorbereitung Tipp für eckige Richtlinien (Oder, Bindestriche überall wieder lieben lernen)

Ich habe ein paar apps die Make-$http.get() Anrufe und ich wollte eine aufbereitete Fehlermeldung mit hässlichen Fehlerdetails versteckt zeigen können, aber zugänglich.  Im Grunde, Dies:

image

Und dann klickt der Benutzer auf den Fehler, Sie sehen mehr info:

image

Einfache Dinge.  Da genaue dieselbe potentielle Fehler in der Verwaltung Bildschirm sowie dem Endbenutzer-Bildschirm angezeigt werden können, Es fordert eindeutig eine benutzerdefinierte eckig Richtlinie.  ICH  habe das gefunden herausragende Serie der Artikel (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) durch die große Dan Wahlin.  Nach seinen Rat, Ich habe sehr schnell ein <Hallo-Welt> Richtlinie und zogen an meinen komplexer Fehler-Anzeige-Rakel. Ich habe ein paar Probleme mit dieser komplexeren Richtlinie getroffen.  Glücklich, irgendwie durch Zufall, Ich erzählte WebStorm (der Editor verwende ich in diesen Tagen) dass die JS-Datei eine eckig-Datei war und es hat mir geholfen herauszufinden, das Problem.  Dies ist der Code für die Richtlinie selbst:

Angular.Module("CDLApp").Richtlinie("GeneralCdlErrorHandler", Funktion() {

Rückkehr {
einschränken: "E",
Ersetzen: wahr,

Anwendungsbereich: {
retrieveLastConfigurationError: "&"
},

Vorlage:
'<Div Class = "Warnung Warnung-Gefahr" Rolle = "Warnung" ng-Init = "DoShowExpandedErrorDetails = True" ng-Karte = "RetrieveLastConfigurationError()">' +
"Gab es ein i/o-Fehler oder andere Fehler. Dies geschieht in der Regel, weil Konfigurationsdatendatei nicht sein könnte " +
' gefunden oder die Konfigurationsdatei enthält falschen Informationen (wie verweisen auf einer Dokumentbibliothek " +
"das ist nicht vorhanden).' +
' <BR />' +
' <Div ng-Karte = "DoShowExpandedErrorDetails">' +
' <a Href = "#" ng-Klick = "DoShowExpandedErrorDetails = ! DoShowExpandedErrorDetails">' +
"Klicken Sie hier, um Details auszublenden." +
' </eine>: ' +
' <BR />' +
' <Pre>{{retrieveLastConfigurationError() | JSON}}</Pre>' +
' <BR />' +
' </div>' +
' <Div ng-Karte = "!DoShowExpandedErrorDetails">' +
' <a Href = "#" ng-Klick = "DoShowExpandedErrorDetails = ! DoShowExpandedErrorDetails">' +
"Klicken Sie hier, um ausführliche Fehlerinformationen zu erweitern." +
' </eine>' +
' </div>' +
'</div>'
};
});

Im Grunde, Ich erstelle ein neues Element namens "GeneralCdlErrorHandler".  Es benötigt Zugriff auf eine Funktion namens RetrieveLastConfigurationError und, in das Bereichsobjekt verarbeitet wird.  Ich hätten wahrscheinlich nur den übergeordneten Bereich, aber das fühlt sich faul.  Wenn jemand meint, dass ich das getan haben, sollten, Ich würde gerne darüber in den Kommentaren zu hören.

Dies war alles in Ordnung, aber ich war nicht immer alles.  Keine Fehler in der Konsole aufgetaucht (mindestens einmal bekam ich alle Sx-Fehler, die ich auf dem Weg erstellt).  Ich verstehe einfach keine Ausgaben, die aus der Richtlinie.  Ich ging und fügte Sie statischen Text vor der ng-Karte-Richtlinie und ich * habe * zu erhalten, die. Das machte mich glauben, dass man vielleicht die Richtlinie war nicht implizit erstellen Sie neue Vars wie "DoShowExpandedErrorDetails" oder ein "ng-Init" drin. 

Ich ging zurück in den HTML-Code zu sehen, hätte ich einen Typ und diesmal WebStorm mir geholfen.  Ich hatte in der RetrieveLastConfigurationError-Funktion wie folgt übergeben worden:

<Allgemein-Cdl-Fehler-Handler retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Allgemein-Cdl-Fehler-handler>

Aber es wirklich notwendig, um das:

<Allgemein-Cdl-Fehler-Handler abrufen-letzte-Konfiguration-Fehler = "CDLController.retrieveLastConfigurationError()">
</Allgemein-Cdl-Fehler-handler>

WebStorm war klug genug, zu wissen, dass es getrennt werden musste.  Hätte es diesen Tipp versorgt, Ich würde wahrscheinlich noch diese Fehlerbehebung werden Lächeln.  Spaß mal!

Der Trick ist dies: nicht nur ist der Richtlinie Elementnamen getrennt, So sind alle Attribute, die Sie hinzufügen.  Sobald ich die Bindestriche hinzugefügt, Sie alle wirkten groß.  Dan's Tutorial zufällig einzelne Kurznamen verwenden, Also habe nicht ich die Verbindung herstellen..

Hoffe, das jemand hilft.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

HTTP 406 Fehler bei der Verwendung von eckigen $http.get gegen SharePoint-REST-Endpunkte

Update: Marc AD Ndersson wies darauf hin, dieses großartige Stück info: http://Blogs.Office.com/2014/08/13/JSON-Light-Support-Rest-SharePoint-API-Released/. Das erklärt einiges :).

Das ist der schlechteste Titel der einen Blog-Post je! Wie auch immer.

Ich tun in der Regel alle meine Prototypen gegen eine O365-Instanz. Ich habe meine persönliche Instanz, so dass ich nicht besorgt über die Auswirkungen auf jemand anderes sein. Als Nebenwirkung – denken Sie daran, wenn wir für unsere Laptops mit Moos – durchgeführt, um virtuelle Maschinen aufrufen SQL Server, IIS, Entscheidung über Hyper-V-vs. VMWare? Wie auch immer...

Ich hatte eine app mit Angular in diesem Umfeld, das entwickelt, unter anderem, Dies:

$http.Get(serverUrl)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.value.forEach(Funktion(i) {

// und so weiter und so Schaum

Dies war nur in zwei verschiedenen SharePoint online-Umgebungen adaequat. Jedoch, Wenn es mein Kollege auf eine Cloudshare-Instanz portiert., Er war immer ein HTTP 406 Fehler (Das war das erste Mal habe ich nie, dass man, Also... Yay, Ich vermute). Wir haben ein wenig Forschung und bemerkte, dass die "Accept"-Header Weg war. SharePoint online war vollkommen zufrieden mit:

Akzeptieren: Application/json

Aber die Cloudshare Instanz (Prem ist die SP, auf einem virtuellen Server gehostet) wollte das klassische "promoveaza = verbose" sowie in hinzugefügt:

Akzeptieren: Application/json;promoveaza = verbose

Zu reparieren, Wir haben den Header als solche:

Var-Config = {Header: {
'Akzeptieren': "Application/Json;promoveaza = verbose'
}
};

$http.Get(serverUrl,config)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.value.forEach(Funktion(i) {

// und so weiter und so Schaum

Entledigte sich die 406, aber auch das Format der Antwort geändert. Es war mehr... ausführlich. (haha!) Weitere Änderungen sind erforderlich, und hier ist das Endergebnis:

Var-Config = {Header: {
'Akzeptieren': "Application/Json;promoveaza = verbose'
}
};

$http.Get(serverUrl,config)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.d.results.forEach(Funktion(i) {

// und so weiter und so Schaum

Es stellte sich nur in einem 30 Minute Problem für uns, so dass wir Glück gehabt. Hoffentlich findet jemand diese nützliche.

</Ende>

How-to: Aktivieren Sie mehrere kantige SharePoint Webparts auf der gleichen Seite

Dieses Blog Beiträge wird beschrieben, wie Sie mehrere haben können Angular.js basiert SharePoint-Webparts (verwiesen durch ein Inhalts-Editor-Webpart) auf der gleichen Seite. Ich rufe ein Inhalts-Editor-Webpart (CEWP) Das verweist JavaScript gebaut, mit dem Angular.js-Framework einen "Angular Webpart."

Angular des bootstrap-Prozess ist super einfach und gerade über jedes Beispiel finden Sie auf dem Internets geht ungefähr so:

<HTML ng-app = "MyApp">

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

</HTML>

Dieses gliedert sich, jedoch, Wenn Sie, aktivieren Sie mehrere CEWP, die mehrere kantige Webparts auf einer Seite darstellt möchten.. Angular werden nur automatisch gegen die erste ng-app-Richtlinie es Funde bootstrap – mindestens ab abgewinkelte Ausführung 1.3.6. Die Lösung ist ziemlich einfach-manuell bootstrap Code stattdessen. Die oben genannten Änderungen jetzt sowas:

<Körper>
<d
IV Id =”bootstrapHere” ng-Controller =”MyController als theController”>
<bla /><bla /><bla />
</div>
</Körper>

<Script Src =”//AJAX.googleapis.com/AJAX/libs/angularjs/1.3.6/Angular.js”></Skript>

<Skript>
Angular.Bootstrap(Angular.Element(Document.getElementById(“bootstrapHere”)),["MyApp"]);
</Skript>

Im Grunde, anstelle von ng-app auf dem Element dazu Ihre bootstrapping, Sie schlagen eine ID auf dieses element. Dann, Verwenden Sie den bootstrap() Methode für eckige verarbeiten selbst das bootstrapping Steuern zur Laufzeit. Ich habe dies mit drei verschiedenen eckig Webparts auf der gleichen Seite getestet und es funktioniert einen Charme.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin