Kategorija Archives: Kampinis

Trouble shooting Patarimas kampinis direktyvų (Arba, Išmokime mylėti brūkšnelius visame vėl)

Turiu kelias programas kad padaryti $http.get() skambučius ir aš norėjau parodyti gražiai formatuotą klaidos pranešimą su bjaurusis klaidos informacija paslėpti, kad, bet prieinama.  Iš esmės, tai:

image

Ir tada jei vartotojas paspaudžia ant klaidos, jie mato daugiau informacijos:

image

Paprasti daiktai.  Kadangi tiksli pačią galimą klaidą gali būti administracinės ekrano, tiek galutinio vartotojo ekrano, jis aiškiai raginama pasirinktinį kampinis direktyvą.  AŠ  nustatėme, kad šis neįvykdyti ankstesnių serijų straipsnių (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) iš didžiojo Dan Wahlin.  Po jo patarimo, Aš labai greitai sukūriau tam <Sveiki pasaulis> direktyva ir perkeltas į mano sudėtingesnis klaidos ekranas valytuvas. Išbėgau į šiek tiek problemų su Šidirektyva sudėtingesnis.  Laimingai, tarsi netyčia, Man buvo pasakyta, WebStorm (redaktorius galiu naudoti šių dienų) kad JS failą buvo kampinis failą ir ji man padėjo išsiaiškinti problemą.  Tai yra kodas, pačioje direktyvoje:

angular.Module("CDLApp").Direktyvos("generalCdlErrorHandler", funkcija() {

grįžti {
apriboti: "E",
pakeisti: tiesa,

taikymo sritis: {
retrieveLastConfigurationError: "&"
},

šablonas:
'<div class = "pavojaus perspėjimo-pavojaus" vaidmenį = "įspėti" NG-init = "doShowExpandedErrorDetails = true" NG-Rodyti = "retrieveLastConfigurationError()">' +
"Įvyko įvesties/išvesties klaida ar kita klaida. Tai dažniausiai atsitinka todėl, kad konfigūracijos duomenų failas negali būti " +
"rasti ar konfigūracijos failas yra netiksli informacija (pvz., nuorodas į dokumentų biblioteką, kurioje " +
"kad neegzistuoja).' +
' <br />' +
' <div ng-Rodyti = "doShowExpandedErrorDetails">' +
' <a href = "#" NG-spustelėkite = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Spauskite čia Norėdami slėpti detales." +
' </a>: ' +
' <br />' +
' <Pre>{{retrieveLastConfigurationError() | JSON}}</Pre>' +
' <br />' +
' </DIV>' +
' <div ng-Rodyti = "!doShowExpandedErrorDetails">' +
' <a href = "#" NG-spustelėkite = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Spauskite čia Norėdami išplėsti Išsami klaidos informacija." +
' </a>' +
' </DIV>' +
'</DIV>'
};
});

Iš esmės, Aš sukurti naujas elementas vadinamas "generalCdlErrorHandler".  Ji turi prieigą prie funkcija vadinama retrieveLastConfigurationError ir kad yra tvarkomas apimtį objekto.  Aš tikriausiai galėjo tiesiog pasinaudoti tėvų sritį, bet kad mano tingus.  Jei kas nors mano, aš turėjo padaryti, Aš norėčiau išgirsti apie tai komentaruose.

Tai buvo viskas gerai, bet aš ne vis nieko.  Be klaidų popped į konsolės (ne rečiau kaip kartą poprawiłem aš sukūriau pakeliui sx klaidų).  Aš tiesiog ne gauti bet kuriame išėjime, iš Direktyvos.  Aš ir pridėti statinį tekstą prieš ng-Rodyti direktyvos ir I * ar * gauti, kad. Tai privertė mane galvoti, kad galbūt direktyva nebuvo leista netiesiogiai sukurti naują vars kaip "doShowExpandedErrorDetails" ar "ng init" ten. 

Aš grįžau į HTML pamatyti, jei aš tipo ir šį kartą WebStorm padėjo atlikti.  Aš turėjo buvo išlaikęs retrieveLastConfigurationError funkcija, kaip tai:

<General-cdl-klaidos-apdorojimo retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</General-cdl-klaidos-apdorojimo>

Bet tikrai reikia tai:

<General-cdl-klaidos-apdorojimo gauti-paskutiniais-konfigūracijos-klaida = "CDLController.retrieveLastConfigurationError()">
</General-cdl-klaidos-apdorojimo>

WebStorm buvo pakankamai gudri, kad žinau, kad jis turėjo kelti žodžius, skaičių.  Jei ji nebuvo pateikta kad užuomina, Aš taip greičiausiai būti dar problemų tai šypsena.  Įdomus kartus!

Pavyko tai: ne tik yra direktyva elemento pavadinimą brūkšnelį, taip yra visais atributais į jį įtraukti.  Kai aš papildomas brūkšnelius, Viskas dirbo puikiai.  Dan pamoka teko naudoti vieną sutrumpinimo, todėl aš nepadarė ryšys.

Tikiuosi, kad tai padės kam nors.

</pabaigos>

undefinedPrenumeruoti savo dienoraštį.

Sekite mane Twitter ne http://www.twitter.com/pagalvin

HTTP 406 Klaida, kai naudojant kampinis $http.get nuo SharePoint poilsio hipotezes

Atnaujinimas: Marc AD ndersson nurodė šį puikus gabalas, info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Tai paaiškina daug :).

Tai gali būti blogiausiu žinutę pavadinimas kada nors! Anyhoo.

Paprastai aš visus mano prototipų prieš O365 egzempliorius. Aš turiu mano asmens instancijos, kad man nereikės nerimauti dėl įtakos kas nors. Kaip panaikinti – prisiminti Kada mes vadiname atliktas aplink virtualios mašinos mūsų nešiojamieji kompiuteriai su MOSS – SQL serverio, IIS, SPRENDŽIAMOSIOS Hyper-V vs. VMWare? Anyhoo...

Man buvo sukurtas naudojant judesio kiekio šioje aplinkoje, kuri nėra app, be kita ko, tai:

$http.get(serverUrl)
.sėkmės(funkcija(duomenų, statusas, antraštės, Config) {

var getLinksResponse = duomenys;

getLinksResponse.value.forEach(funkcija(theResult) {

// ir taip puta

Tai dirbo tik baudą dviejų skirtingų SharePoint online aplinkoje. Tačiau, Kada mano kolega jis perkeltas į Cloudshare instancijos, jis buvo gauti, HTTP 406 klaida (kuris buvo pirmą kartą aš kada nors gavo, kad vienas, Taigi... yay, tikriausiai). Mes padarėme šiek tiek mokslinių tyrimų ir pastebėjau, kad "Priimti" antraštė buvo ne. SharePoint internete buvo visiškai laimingas su:

Priimti: paraiškos/json

Bet cloudshare atveju (kuri yra SP prem, vyko virtualiame serveryje) norėjo klasikinis "odata = kalbantys" įrašyti, taip pat:

Priimti: paraiškos/json;oData = kalbantys

Nustatyti, kad, Mes pridėjome antraštėje tokiais:

var config = {antraštės: {
"Priimti": "paraiškos/json;oData = kalbantys "
}
};

$http.get(serverUrl,Config)
.sėkmės(funkcija(duomenų, statusas, antraštės, Config) {

var getLinksResponse = duomenys;

getLinksResponse.value.forEach(funkcija(theResult) {

// ir taip puta

Kad atsikratyti, kad 406, Tačiau ji taip pat pakeitė formatą, atsakymas. Tai buvo daugiau... kalbantys. (Haha!) Daugiau pakeitimų buvo reikalaujama ir Štai galutinis rezultatas:

var config = {antraštės: {
"Priimti": "paraiškos/json;oData = kalbantys "
}
};

$http.get(serverUrl,Config)
.sėkmės(funkcija(duomenų, statusas, antraštės, Config) {

var getLinksResponse = duomenys;

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

// ir taip puta

Tai tik pasuko į a 30 minutę problema mums, Taigi mes lucked. Tikimės, kad kas nors mano, kad tai naudinga.

</pabaigos>

"Kaip?": Įgalinti kelias kampinis SharePoint žiniatinklio dalis tame pačiame puslapyje.

Šiame dienoraštyje pranešimų aprašoma, kaip jūs galite turėti kelis Angular.js pagal SharePoint žiniatinklio dalys (nuorodos per turinio rengyklės žiniatinklio dalį) tame pačiame puslapyje.. I 'm calling turinio rengyklės žiniatinklio dalį (CEWP) tyta JavaScript pastatytas naudojant Angular.js sistemą yra "kampinis žiniatinklio dalis."

Judesio kiekio 's įkrovos procesas yra itin paprasta ir beveik kiekvieną pavyzdį rasite internetas eina kažką panašaus į tai:

<HTML ng-app = "mano">

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

</HTML>

Tai skyla, Tačiau, Jei norite įgalinti kelis CEWP atstovaujančių kelias kampinis žiniatinklio dalis tame pačiame puslapyje.. Judesio kiekio bus tik automatiškai įkrovos nuo pirmosios ng-app direktyvos jis nustato – bent kaip ir kampinis versija 1.3.6. Sprendimas yra labai paprastas-rankiniu būdu įkrovos kodą vietoj. Aukščiau dabar pasikeičia į kažką panašaus į tai:

<įstaiga>
<d
IV id =”bootstrapHere” NG-controller =”myController kaip theController”>
<blah /><blah /><blah />
</DIV>
</įstaiga>

<myController kaip theController”//Ajax.googleapis.com/Ajax/libs/angularjs/1.3.6/angular.js”></scenarijų>

<scenarijų>
angular.Bootstrap(angular.element(document.getElementById(“bootstrapHere”)),["mano"]);
</scenarijų>

Iš esmės, Užuot naudoję ng-app elemente daryti savo Bootstrap, jums slap ant elemento ID. Tada, Naudokite apie bootstrap() metodas, kampinis save kontroliuoti Bootstrap apdoroti run-time. Aš išbandyti tai su trijų skirtingų kampinis puslapio dalis į tą patį puslapį ir jis veikia žavesio.

</pabaigos>

undefinedPrenumeruoti savo dienoraštį.

Sekite mane Twitter ne http://www.twitter.com/pagalvin