Kategorija Arhīvs: Leņķa

Bojājumu Tip leņķa direktīvām (Vai, Mācīties mīlēt pārnesumzīmes pa visu vēlreiz)

Man ir pāris progr, kas padara $http.get() zvanus, un man vēlējās, lai varētu parādīt jauki formatēts kļūdas ziņojumu ar slēpto neglīts kļūdas detaļas, bet var piekļūt.  Būtībā, tas:

image

Un tad, ja lietotājs noklikšķina uz šo kļūdu, viņi redz vairāk info:

image

Vienkāršas lietas.  Kopš pašas iespējamās kļūdas var parādīties administratīvo ekrānu, kā arī gala lietotāja ekrāna, Tas skaidri aicināja pielāgotu leņķa direktīvu.  ES  uzskatīja, ka šis izcilu sērija raksti (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) ar lielo Dan Wahlin.  Pēc viņa padomu, Es ļoti ātri izveidot <Hello pasaule> direktīva un pārcēlās uz manu sarežģītāka kļūdu parādīšanas squeegee. Man uzbrauca mazliet problēmas sarežģītākas direktīvas.  Laimīgi, it_k ā nejauši, Bija teicis, WebStorm (Es izmantoju šajās dienās redaktors) ka JS fails ir leņķa failu un tas palīdzēja man saprast problēmu.  Šī ir pati direktīva kods:

Angular.Module("CDLApp").Direktīva("generalCdlErrorHandler", funkcija() {

atgriešanās {
ierobežotu: "E",
aizstāt: patiess,

darbības joma: {
retrieveLastConfigurationError: "&"
},

Veidne::
'<div class = "trauksmes signāls briesmu" loma = "brīdināt" ng-init = "doShowExpandedErrorDetails = true" ng šovs "retrieveLastConfigurationError =()">' +
"Radās ievadizvades kļūda vai citas kļūdas. Parasti tas notiek, jo konfigurācijas datu fails nevar tikt ' +
' atrast, vai_ar ī konfigurācijas fails satur nepatiesu informāciju (piemēram, apskatot dokumentu bibliotēkā " +
"kas nepastāv).' +
' <br />' +
' <div. ng-Parādīt = "doShowExpandedErrorDetails">' +
' <href = "#" ng klikšķi = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Noklikšķiniet šeit, lai paslēptu detaļas." +
' </a>: ' +
' <br />' +
' <Pre>{{retrieveLastConfigurationError() | JSON}}</Pre>' +
' <br />' +
' </DIV>' +
' <div. ng-Parādīt = "!doShowExpandedErrorDetails">' +
' <href = "#" ng klikšķi = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Noklikšķiniet šeit, lai paplašinātu kļūdas detaļas." +
' </a>' +
' </DIV>' +
'</DIV>'
};
});

Būtībā, Esmu izveidot jaunu elementu, sauc par "generalCdlErrorHandler".  Tai ir jāpiekļūst funkciju sauc retrieveLastConfigurationError un kas apstrādā objektu darbības jomu.  Es droši vien būtu varējis vienkārši izmantot pamata darbības joma, bet tā ir sajūta slinks.  Ja kāds domā, ka būtu jādara kas, Es labprāt vēlētos dzirdēt par to komentārus.

Tas bija viss kārtībā, bet es nesaņemu neko.  Bez kļūdām, kas popped konsole (vismaz vienu reizi es noteikti visas sx kļūdas es radīju gar ceļu).  Man vienkārši nebija saņemt jebkādu izvadi no direktīvas.  Es gāju un pievienot statisku tekstu pirms Direktīvas ng šovs, un es * darīja * dabūji. Tas lika man domāt, ka varbūt direktīva nebija atļauts netieši radīt jaunu vars, piemēram, "doShowExpandedErrorDetails" vai "ng-init" ir tur. 

Es devos atpakaļ uz HTML, lai redzētu, ja man bija tipa un šoreiz WebStorm palīdzēja man out.  Bija garām retrieveLastConfigurationError funkciju, kā tas:

<ģenerālis cdl-kļūda-apdarinātājs retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</ģenerālis cdl-kļūda-apdarinātājs>

Bet tas tiešām vajadzēja šo:

<ģenerālis cdl-kļūda-apdarinātājs izgūt-pēdējo-konfigurācijas-kļūda = "CDLController.retrieveLastConfigurationError()">
</ģenerālis cdl-kļūda-apdarinātājs>

WebStorm bija pietiekami gudrs, lai zinu, ka to nācās veikt zilbjdali.  Ja tā nebija, ka mājiens, Es būtu droši vien būtu vēl traucējummeklēšana šī smaids.  Jautri reizes!

Tas ir triks: ne tikai Direktīvu elementa nosaukumu rakstāma, Tātad ir jebkādi atribūti, pievienojiet to.  Pēc tam, kad es pievienoja pārnesumzīmes, tas viss strādāja lieliski.  Dan apmācība notika ar vienu īsu nosaukumu lietošana, tāpēc es neizdarīja savienojums.

Ceru, ka tas palīdz kāds.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin

HTTP 406 Kļūda, lietojot leņķa $http.get pret SharePoint atpūtas beigu punktiem

Atjauninājums: Marc AD ndersson norādīja uz šo lielisko info gabals: http://Blogs.Office.com/2014/08/13/JSON-Light-Support-Rest-SharePoint-API-Released/. Tas izskaidro daudz :).

Tas var būt sliktākais nosaukums blog post jebkad! Anyhoo.

Es parasti darīt visu manu prototipu pret O365 instances. Man ir mana personīgā gadījumu tāpēc, ka man nav jāuztraucas par to ietekmē kāds cits. Kā malā – atcerieties, kad mēs saucam veic ap virtuālās mašīnas mūsu klēpjdatorus ar SŪNĀM-SQL Server, IIS, izlemt, Hyper-V vs. VMWare? Anyhoo...

Bija izveidojies app izmantojot leņķisko šajā vidē, kas, cita starpā, tas:

$http.Get(serverUrl)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funkcija(theResult) {

// un tā tālāk, un tā putas

Tas strādā tikai naudas sodu divus dažādus SharePoint tiešsaistes vidē. Tomēr, kad mans kolēģis pārnesuši Cloudshare instances, viņš kļūst HTTP 406 kļūda (kas bija pirmā reize, kad es kādreiz ieguva, ka viens, Tātad... yay, man šķiet). Mums bija pētniecības mazliet un pamanīja, ka "Akceptēt" header ir izslēgts. SharePoint tiešsaistē bija pilnīgi apmierināts ar:

Akceptēt: pieteikums/json

Bet cloudshare instances (kas atrodas prem SP, hosted virtuālā servera) gribēja klasisko "odata = runīgs" papildina arī:

Akceptēt: pieteikums/json;oData = runīgs

Noteikt, ka, mēs pievienojām header kā tādu:

var config = {galvenes: {
"Pieņemt": "lietojumprogrammu/json;oData = runīgs "
}
};

$http.Get(serverUrl,Config)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

getLinksResponse.value.forEach(funkcija(theResult) {

// un tā tālāk, un tā putas

Ka ticis vaļā no 406, bet to arī mainīt atbildes formāts. Tas bija vairāk … runīgs. (haha!) Nebija vajadzīgas vairākas izmaiņas, un šeit ir gala rezultāts:

var config = {galvenes: {
"Pieņemt": "lietojumprogrammu/json;oData = runīgs "
}
};

$http.Get(serverUrl,Config)
.panākumi(funkcija(datu, statuss, galvenes, Config) {

var getLinksResponse = dati;

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

// un tā tālāk, un tā putas

Tas tikai pārvērtās 30 minūte problēma ne tikai mums, tāpēc mēs tiksim cauri sveikā. Cerams, ka kāds atrod šo noderīga.

</beigās>

Praktiski padomi: Iespējot vairākas leņķa SharePoint Web daļas vienā lappusē

Šis emuārs amatu apraksta, kā var būt vairākas Angular.js balstīta SharePoint web daļas (atsauce, izmantojot satura redaktora web daļu) tajā pašā lappusē. Es esmu aicinot satura redaktora web daļu (CEWP) kas atsaucas uz JavaScript, kas būvēti, izmantojot Angular.js sistēmu "leņķiskās Web daļu."

Leņķisko ir bootstrap process ir super viegli un tikai par katru piemēru, jūs atradīsiet par internets iet kaut kas līdzīgs šim:

<HTML ng-app = "myApp">

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

</HTML>

Šī sadala, Tomēr, Ja vēlaties iespējot vairākus CEWP, kas pārstāv vairākas leņķa web daļas vienā lappusē. Leņķisko tiks automātiski bootstrap pret pirmo direktīvu ng app tas atrod – vismaz no leņķa versija 1.3.6. Risinājums ir diezgan vienkāršs – manuāli bootstrap savu kodu, nevis. Iepriekš tagad pārvēršas kaut kas līdzīgs šim:

<organizācija>
<d
IV id =”bootstrapHere” ng kontrolieris =”myController, theController”>
<blah /><blah /><blah />
</DIV>
</organizācija>

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

<skriptu>
Angular.bootstrap(Angular.Element(document.getElementById(“bootstrapHere”)),["myApp"]);
</skriptu>

Būtībā, tā vietā, lai izmantotu ng app elementā darīt jūsu bootstrapping, jūs iepļaukāt uz elementa ID. Pēc tam, izmantot sāknēšanas programma() metodi, ar stūrainām sevi kontrolēt bootstrapping procesu izpildes laikā. Esmu testē šo ar trīs dažādiem leņķa web daļas vienā lappusē, un tas darbojas šarmu.

</beigās>

undefinedAbonēt manu blogu.

Sekot mani uz čivināt pie http://www.twitter.com/pagalvin