Kategorija Arhiv: Kotni

Težav konica za kotno direktiv (Ali, Naučimo se ljubiš vezaje vsega spet)

Imam nekaj apps, da bi $http.get() klici in želel biti zmožen razkazati a lepo oblikovanega sporočila o napaki z grdo napako podrobnosti skrite, vendar dosegljiv.  V bistvu, to:

image

In potem če uporabnik klikne na napako, vidijo več info:

image

Prepost tvar.  Ker točno isto potencialne napake se lahko pojavijo v upravnih zaslon, kot tudi končni uporabnik zaslon, jasno pozval meri kotni direktive.  I  našel to izjemne serije člankov (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) z veliki Dan Wahlin.  Po njegov nasvet, Sem zelo hitro zagnati krik in vik a <Hello-world> Direktiva in se preselil na moji kompleksnejše napake prikaz strgalo iz gume. Stekel sem v a košček od trud s to direktivo, bolj zapletene.  Srečno, nekako po naključju, Je povedal WebStorm (urejevalnik uporabljam te dni) da JS datoteko kotni datoteko in to pomočnik mi razbrati vprašanje.  To je koda za sama direktiva:

angular.module("CDLApp").Direktive("generalCdlErrorHandler", Funkcija() {

vrnitev {
omejujejo: "E",
Zamenjaj: True,

področje: {
retrieveLastConfigurationError: "&"
},

predlogo:
'<razred del = "opozori opozorilo-nevarnost" vlogo = "opozorila" NG-init = "doShowExpandedErrorDetails = true" NG-show = "retrieveLastConfigurationError()">' +
"Prišlo do v/i napake ali druge napake. To se običajno zgodi, ker konfiguracijo podatkovne datoteke ni bilo mogoče " +
"najti ali pa konfiguracijska datoteka vsebuje netočne informacije (kot navajanje knjižnico dokumentov " +
"da ne obstaja).' +
' <br />' +
' <div ng-show = "doShowExpandedErrorDetails">' +
' <a href = "#" NG klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
Kliknite tukaj za skrivanje podrobnosti." +
' </a>: ' +
' <br />' +
' <pre>{{retrieveLastConfigurationError() | JSON}}</pre>' +
' <br />' +
' </div>' +
' <div ng-show = "!doShowExpandedErrorDetails">' +
' <a href = "#" NG klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
»Kliknite tukaj, da razširite podrobnosti o napaki. « +
' </a>' +
' </div>' +
'</div>'
};
});

V bistvu, Sem ustvariti nov element, imenovano "generalCdlErrorHandler".  Potrebuje dostop do funkcijo imenovano retrieveLastConfigurationError in ki obravnava področje predmeta.  Imam verjetno bi lahko samo uporabljajo nadrejenega obsega, ampak to meni leni.  Če kdo misli, da bi moral narediti da, Bi radi slišali o tem v pripombah.

To je bilo vse v redu, vendar sem bil ne dobili ničesar.  Brez napak, ki izstrelil v konzoli (vsaj enkrat sem popravil vse napake sx, sem ustvaril na poti).  Preprosto nisem dobil nobenih rezultatov iz Direktive.  Šel in dodal nekaj statičnega besedila pred ng-show direktive in * si * dobil. To me mislijo, da morda direktive ni bilo dovoljeno da implicitno ustvariti nov VURS kot "doShowExpandedErrorDetails" ali "ng-init" tam. 

Sem šel nazaj v HTML, da vidim, če sem imel vrsto in ta čas WebStorm mi je pomagal.  Sem imel bil poteka v funkciji retrieveLastConfigurationError takole:

<splošno-cdl-napaka-trener retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</splošno-cdl-napaka-trener>

Ampak res je bilo to:

<splošno-cdl-napaka-trener rešitev-nazadnje-konfiguracijo-napaka = "CDLController.retrieveLastConfigurationError()">
</splošno-cdl-napaka-trener>

WebStorm je bil dovolj pameten, da veš, da je moral biti deljena.  Če to ni ta namig, Jaz bi verjetno treba še odpravljanje težav to Smile.  Zabavno krat!

Ukana je to: ne samo direktiva element ime deljena, tako so vse atribute dodate nanj.  Ko sem dodal vezaje, vse obdelan velik.  Dan's tutorial, se je zgodilo z uporabo kratkih enotnega imena, tako da nisem, da povezave.

Upanje to pomoč nekateri.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin

HTTP 406 Napaka pri uporabi kotni $http.get proti SharePoint PREOSTALI končne točke

Posodobitev: Marc oglas ndersson poudariti to velik krpa od zavijati: http://blogs.Office.com/2014/08/13/JSON-Light-support-REST-SharePoint-API-Released/. To pojasnjuje veliko :).

Da se lahko najslabši naslov blog post Kdaj! Anyhoo.

Običajno delam vse moje prototipov proti primerek O365. Imam svoj osebni primer, tako da ni treba biti zaskrbljen zaradi vpliva nikomur. Kot prahi – ne pozabite kdaj pravimo izvajajo okoli virtualne stroje na naših prenosnih računalnikov z MAHOM – SQL Server, IIS, odločanju, Hyper-V vs. VMWare? Nekako...

Sem imel razvit app uporabo kotnega v tem okolju, ki pa, med drugim, to:

$http.Get(serverUrl)
.uspeh(Funkcija(podatkov, status, glave, config) {

var getLinksResponse = podatkov;

getLinksResponse.value.forEach(Funkcija(theResult) {

// in tako naprej in tako pena

To je ki dela šele lep v dveh različnih SharePoint online okoljih. Vendar, ko moj kolega je napovedati stopnje Cloudshare, bil je že na HTTP 406 Napaka (ki je prvič sem kdajkoli dobil tisti, tako... Bravo, zdi se mi). Nismo malo raziskav in opazil, da je glava "Accept" odštel. SharePoint online je bila popolnoma zadovoljna z:

Sprejeti: Uporaba/json

Vendar je cloudshare stopnje (ki je SP na prem, gostuje v virtualni strežnik) Hotel classic "odata = verbose" doda tudi:

Sprejeti: Uporaba/json;odata = verbose

Se določi, da, Dodali smo glave kot take:

var config = {glave: {
"Sprejeti": "uporaba/json;odata = verbose "
}
};

$http.Get(serverUrl,config)
.uspeh(Funkcija(podatkov, status, glave, config) {

var getLinksResponse = podatkov;

getLinksResponse.value.forEach(Funkcija(theResult) {

// in tako naprej in tako pena

Ki znebili na 406, vendar je tudi spremenila oblika odziva. Je bilo več... glej verbosly. (haha!) Več sprememb so bile zahtevane in tukaj je končni rezultat:

var config = {glave: {
"Sprejeti": "uporaba/json;odata = verbose "
}
};

$http.Get(serverUrl,config)
.uspeh(Funkcija(podatkov, status, glave, config) {

var getLinksResponse = podatkov;

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

// in tako naprej in tako pena

To samo spremenila v a 30 minuto problem za nas, tako mi lucked. Upajmo, da nekdo najde, to je koristen.

</namen>

Nasveti: Omogoči več kotni SharePoint spletnih gradnikov na isti strani

Ta blog objav opisuje, kako lahko imate več Angular.js podlagi SharePoint spletnih gradnikov (sklicuje preko spletni gradnik urejevalnika vsebine) na isti strani. Kličem spletni gradnik urejevalnika vsebine (CEWP) ki se sklicuje na JavaScript, zgrajena z uporabo okvir Angular.js »Kotni spletnega gradnika. «

Kotni 's bootstrap proces je super enostavno in skoraj vsak primer najdete na internets gre nekako takole:

<HTML ng-app = "MojaAplikacija">

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

</HTML>

Ta razgradi, vendar, Če želite omogočiti več CEWP predstavlja več kotni spletnih gradnikov na isti strani. Kotni bo le samodejno bootstrap proti prve Direktive ng-app to najde – vsaj od različice kotni 1.3.6. Rešitev je zelo preprosta-ročno bootstrap kodo namesto. Zgoraj zdaj spremeni v kaj takega:

<telo>
<d
IV id =”bootstrapHere” NG kontroler =”myController kot theController”>
<bla /><bla /><bla />
</div>
</telo>

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

<skript>
angular.bootstrap(angular.element(document.getElementById(“bootstrapHere”)),[»» MyApp ««]);
</skript>

V bistvu, namesto using ng-app na elementu uganjati vaš bootstrapping, slap ID na ta element. Nato, uporabite v bootstrap() metoda na kotni sam nadzor, je bootstrapping proces pri zagonu. Ive ' preizkušen to s treh različnih kotni spletne gradnike na isti strani in to tovarna a čar.

</namen>

undefinedNaročite se na moj blog.

Sledite mi na Cvrkutati na http://www.twitter.com/pagalvin