Arsip Kategori: Sudut

Pemecahan masalah Tip untuk sudut arahan (Atau, Belajar untuk mencintai tanda hubung)

Saya punya beberapa aplikasi yang membuat $http.get() panggilan dan saya ingin untuk dapat menunjukkan pesan kesalahan yang diformat dengan baik dengan rincian kesalahan jelek yang tersembunyi, tetapi dapat diakses.  Pada dasarnya, ini:

image

Dan kemudian jika pengguna mengklik pada kesalahan, mereka melihat Info lebih lanjut:

image

Hal-hal sederhana.  Karena kesalahan potensial yang tepat sama dapat muncul di layar administratif serta layar pengguna akhir, itu jelas menyerukan sudut arahan kustom.  SAYA  menemukan ini seri yang luar biasa Artikel (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) Oleh Agung Dan Wahlin.  Mengikuti nasihatnya, Saya sangat cepat membuat <Halo-dunia> direktif dan pindah ke kesalahan tampilan squeegee saya lebih kompleks. Aku berlari ke sedikit kesulitan dengan direktif ini lebih kompleks.  Bahagia, semacam kebetulan, Saya telah mengatakan WebStorm (editor saya menggunakan hari ini) bahwa JS file file sudut dan itu membantu saya mencari tahu masalah.  Ini adalah kode untuk direktif sendiri:

angular.module("CDLApp").direktif("generalCdlErrorHandler", fungsi() {

kembali {
membatasi: "E",
ganti: benar,

Ruang lingkup: {
retrieveLastConfigurationError: "&"
},

template:
'<div kelas = "peringatan peringatan-bahaya" peran = "waspada" ng-init = "doShowExpandedErrorDetails = true" ng-Tampilkan = "retrieveLastConfigurationError()">' +
' Ada i/o error atau kesalahan lainnya. Hal ini biasanya terjadi karena file data konfigurasi tidak bisa ' +
' ditemukan atau file konfigurasi berisi informasi yang tidak akurat (seperti referensi perpustakaan dokumen ' +
' yang tidak ada).' +
' <br />' +
' <div ng-Tampilkan = "doShowExpandedErrorDetails">' +
' <href = "#" ng-klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Klik di sini untuk menyembunyikan rincian.' +
' </a>: ' +
' <br />' +
' <pra>{{retrieveLastConfigurationError() | JSON}}</pra>' +
' <br />' +
' </div>' +
' <div ng-Tampilkan = "!doShowExpandedErrorDetails">' +
' <href = "#" ng-klik = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Klik di sini untuk memperluas rincian kesalahan.' +
' </a>' +
' </div>' +
'</div>'
};
});

Pada dasarnya, Saya membuat sebuah elemen baru yang disebut "generalCdlErrorHandler".  Itu membutuhkan akses ke fungsi yang disebut retrieveLastConfigurationError dan yang ditangani dalam cakupan obyek.  Aku mungkin bisa hanya menggunakan orangtua lingkup, tapi yang merasa malas.  Jika ada yang berpikir aku harus melakukan itu, Saya akan senang mendengar tentang hal itu di komentar.

Ini adalah semua baik-baik saja, tetapi saya tidak mendapatkan apa-apa.  Tidak ada kesalahan yang muncul di konsol (setidaknya sekali aku tetap semua kesalahan sx saya membuat sepanjang jalan).  Aku hanya tidak mendapatkan output dari direktif.  Aku pergi dan menambahkan beberapa teks statis sebelum direktif ng-show dan * melakukan * mendapatkan bahwa. Ini membuat saya berpikir bahwa mungkin direktif tidak diizinkan untuk secara implisit membuat baru vars seperti "doShowExpandedErrorDetails" atau "ng-init" di sana. 

Aku kembali ke HTML untuk melihat jika aku tipe dan kali ini WebStorm membantu saya keluar.  Saya telah lewat dalam fungsi retrieveLastConfigurationError seperti ini:

<Umum-cdl--handler kesalahan retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Umum-cdl--handler kesalahan>

Tapi itu benar-benar diperlukan untuk ini:

<Umum-cdl-kesalahan-penangan mengambil-terakhir-konfigurasi-kesalahan = "CDLController.retrieveLastConfigurationError()">
</Umum-cdl--handler kesalahan>

WebStorm adalah cukup pintar untuk tahu bahwa itu harus menjadi hyphenated.  Jika itu tidak memberikan petunjuk yang, Saya akan mungkin akan masih pemecahan masalah ini Tersenyum.  Fun kali!

Trik ini: tidak hanya nama elemen direktif hyphenated, Jadi adalah atribut apapun Anda menambahkan untuk itu.  Begitu saya menambahkan tanda hubung, itu semua bekerja hebat.  Dan tutorial yang terjadi menggunakan nama tunggal yang pendek, Jadi saya tidak membuat sambungan.

Semoga ini bisa membantu seseorang.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

HTTP 406 Kesalahan saat menggunakan sudut $http.get terhadap SharePoint seluruh titik akhir

Update: Marc AD ndersson menunjukkan sepotong besar info: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-api-Released/. Itu menjelaskan banyak hal :).

Itu mungkin judul posting blog terburuk pernah! Anyhoo.

Saya biasanya melakukan semua saya prototyping terhadap O365 instance. Aku punya contoh pribadi saya sehingga saya tidak perlu khawatir tentang mempengaruhi orang lain. Sebagai samping-ingat saat kami panggilan dilakukan di sekitar mesin virtual pada laptop kami dengan Lumut-SQL Server, IIS, memutuskan vs Hyper-V. VMWare? Anyhoo...

Saya telah mengembangkan sebuah aplikasi yang menggunakan sudut dalam lingkungan ini yang melakukan, di antara hal lain, ini:

$http.Get(serverUrl)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Ini bekerja baik di dua berbeda SharePoint online lingkungan. Namun, Ketika rekan saya porting ke Cloudshare instance, Ia mendapatkan HTTP 406 kesalahan (yang adalah pertama kalinya saya pernah punya satu, Jadi... yay, Saya rasa). Kami melakukan sedikit riset dan melihat bahwa header "Menerima" adalah off. SharePoint online adalah sangat senang dengan:

Menerima: aplikasi json

Tetapi contoh cloudshare (yang merupakan SP pada prem, host di virtual server) ingin klasik "odata = verbose" ditambahkan dalam juga:

Menerima: aplikasi json;oData = verbose

Untuk memperbaikinya, Kami menambahkan header seperti:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(fungsi(theResult) {

// dan seterusnya dan jadi buih

Yang menyingkirkan 406, Tapi itu juga mengubah format respon. Itu lebih... verbose. (Haha!) Lebih banyak perubahan yang diperlukan dan di sini adalah hasil akhir:

var config = {header: {
'Menerima': ' aplikasi json;oData = verbose'
}
};

$http.Get(serverUrl,config)
.sukses(fungsi(data, status, header, config) {

var getLinksResponse = data;

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

// dan seterusnya dan jadi buih

Ini hanya berubah menjadi 30 menit masalah bagi kita, Jadi kita beruntung. Mudah-mudahan seseorang menemukan ini berguna.

</akhir>

Bagaimana-untuk: Mengaktifkan beberapa sudut SharePoint Web Bagian pada halaman yang sama

Blog ini posting menjelaskan bagaimana Anda dapat memiliki beberapa Angular.js berbasis SharePoint web bagian (direferensikan melalui bagian web content editor) pada halaman yang sama. Aku memanggil editor konten web bagian (CEWP) itu referensi JavaScript yang dibangun menggunakan kerangka Angular.js "sudut Web bagian."

Sudut 's bootstrap proses super mudah dan hampir setiap contoh yang Anda temukan di the internets pergi sesuatu seperti ini:

<HTML ng-app = 'myApp'>

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

</HTML>

Ini rusak, Namun, Jika Anda ingin mengaktifkan beberapa CEWP mewakili beberapa sudut web bagian pada halaman yang sama. Sudut akan hanya secara otomatis bootstrap terhadap direktif ng-app pertama itu menemukan – setidaknya pada sudut versi 1.3.6. Solusinya cukup sederhana – secara manual bootstrap kode Anda sebaliknya. Atas sekarang berubah menjadi sesuatu seperti ini:

<bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">
<d
IV id =”bootstrapHere” ng-controller =”myController sebagai theController”>
<bla /><bla /><bla />
</div>
</bodyHTMLan >>< kuat > pesan yang kuat.</strong> </body> </html> ">

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

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

Pada dasarnya, Alih-alih menggunakan ng-app pada elemen untuk melakukan bootstrap Anda, Anda menampar ID ke elemen. Kemudian, menggunakan bootstrap() metode pada sudut itu sendiri untuk mengendalikan bootstrap proses pada saat run-time. Saya telah menguji ini dengan tiga bagian web sudut yang berbeda pada halaman yang sama dan kerjanya pesona.

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin