Category Archives: Кутові

Діагностичні підказка для кутових директиви (Або, Навчитися любити дефіси знову знову)

У мене є кілька застосунків, що зробити $http.get() дзвінки і я хотів мати можливість показати красиво відформатованих помилка повідомлення з потворною помилка деталі приховані, але доступним.  В основному, Це:

image

А потім, якщо користувач натискає на помилку, вони бачать Детальніше:

image

Прості речі.  Оскільки точне ж потенційні повідомлення про помилку може з'явитися в адміністративних екрану, а також кінцевий користувач екран, Він чітко закликав до настроюваного кутових директиви.  Я  знайшов це видатного серіалу статей (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) за великого Ден Wahlin.  Після його поради, Я створив дуже швидко <Привіт світ> Директива і переїхав до мого складніші помилка відображення Ракель. Я побіг до трохи неприємностей з цього більш складні директиви.  На щастя, Сортувати за шанс, Я розповів WebStorm (редактор, я використовую ці дні) що JS файл був кутовий файл, і це допомогло мені з'ясувати питання.  Це код для себе Директива:

angular.Module("CDLApp").Директива("generalCdlErrorHandler", функція() {

повернення {
обмежити: "Е",
замінити: Істина,

Сфера: {
retrieveLastConfigurationError: "&"
},

Шаблон:
'<DIV клас = "Оповіщати оповіщення небезпеки" роль = "оповіщення" нг init = "doShowExpandedErrorDetails = true" NG шоу = "retrieveLastConfigurationError()">' +
"Там була помилка вводу-виводу або інші помилки. Зазвичай це відбувається тому, що файл даних конфігурації не вдалося ' +
' знайшов або конфігураційний файл містить неточної інформації (Наприклад, посилання на бібліотеку документів ' +
"це не існує).' +
' <br />' +
' <DIV ng шоу = "doShowExpandedErrorDetails">' +
' <href = "#" нг клацніть = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Натисніть тут, щоб приховати подробиці.' +
' </на>: ' +
' <br />' +
' <попередньо>{{retrieveLastConfigurationError() | JSON}}</попередньо>' +
' <br />' +
' </DIV>' +
' <DIV ng шоу = "!doShowExpandedErrorDetails">' +
' <href = "#" нг клацніть = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
"Натисніть тут, щоб розгорнути відомості про помилку." +
' </на>' +
' </DIV>' +
'</DIV>'
};
});

В основному, Я створюю новий елемент під назвою "generalCdlErrorHandler".  Вона потребує доступу до функції, яка називається retrieveLastConfigurationError і що обробляються в рамки об'єкта.  Я ймовірно може просто використовували батьків у сферу, але це відчуває ледачий.  Якщо хтось думає, що я повинен зробив, що, Мені б дуже хотілося почути про це в коментарях.

Це було добре, але я не отримую, що-небудь.  Без помилок, вискочив в консолі (принаймні один раз я виправлені всі помилки sx я створив в дорозі).  Я просто не отримати будь-який вихід з директиви.  Я пішов і додав кілька статичний текст перед директиви ng шоу і я * чи * отримати, що. Це змусило мене замислитися, що можливо Директива не було дозволено створити новий vars як "doShowExpandedErrorDetails" явно чи неявно мають "ng-init" там. 

Я повернувся в HTML, щоб побачити, якщо б я був тип і цього разу WebStorm допоміг мені вибратися.  Я був проходженні в retrieveLastConfigurationError функцію, як це:

<Генеральний cdl помилка обробника retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Генеральний cdl помилка обробника>

Але це дійсно необхідно бути це:

<Генеральний cdl помилка обробника отримати останній--помилка конфігурації = "CDLController.retrieveLastConfigurationError()">
</Генеральний cdl помилка обробника>

WebStorm був досить розумний, щоб знати, що це повинно було бути через дефіс.  Якщо це не передбачено натяком, Я б напевно буде як і раніше усунення несправностей це посмішка.  Весело рази!

Хитрість полягає в наступному: не тільки це директива вставити ім'я елемента через дефіс, так, є будь-які атрибути, додавати в неї.  Одного разу я додав переносів, все це працює прекрасно.  Дана підручник довелося використовувати короткі одного імена, так що я не роблять зв'язок.

Сподіваюся, це допоможе хтось.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

HTTP 406 Помилка при використанні кутових $http.get проти SharePoint відпочинку кінцевих точок

Оновлення: Марк оголошення ndersson вказав на цей великий шматок інформація: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Це багато що пояснює :).

Що може бути коли-небудь найгірших заголовок повідомлення в блозі! Anyhoo.

Я зазвичай робити всі мої Прототипування проти O365 екземпляр. У мене є моє особисте екземпляр так що я не повинні бути турбуюся про зачіпають будь-хто інший. Як у бік – пам'ятаєте, коли ми закликаємо рознесену навколо віртуальних машин наші ноутбуки з МОСС-SQL Server, IIS, Вирішивши проти Hyper-V. VMWare? Anyhoo...

Я розробив програму за допомогою кутових в цьому середовищі, що робить, серед іншого, Це:

$HTTP.Get(serverUrl)
.успіх(функція(дані, статус, заголовки, Config) {

VAR getLinksResponse = даних;

getLinksResponse.value.forEach(функція(theResult) {

// і так далі і так піни

Це працює лише штрафом у двох різних середовищах онлайн SharePoint. Однак, Коли, мій колега портовано на Cloudshare екземпляр, він отримував послугами HTTP 406 помилка (яка була в перший раз я коли-небудь отримав що один, так.. Яй, Я гадаю). Ми зробили кілька досліджень і зауважив, що заголовку «Прийняти» був відключений. SharePoint онлайн була абсолютно щаслива зі:

Прийняти: застосування/json

Але cloudshare екземпляр (яка містить SP прем, відбулася у віртуальному сервері) хотів класичний "odata = verbose" додані також:

Прийняти: застосування/json;odata = verbose

Щоб виправити, що, Ми додали заголовка таким чином:

VAR config = {заголовки: {
"Приймати": ' застосування/json;odata = verbose'
}
};

$HTTP.Get(serverUrl,Config)
.успіх(функція(дані, статус, заголовки, Config) {

VAR getLinksResponse = даних;

getLinksResponse.value.forEach(функція(theResult) {

// і так далі і так піни

Що позбулися на 406, але це також змінив формат відповідь. Це було більше.. verbose. (Ха-ха!) Більше змін були необхідні і ось кінцевий результат:

VAR config = {заголовки: {
"Приймати": ' застосування/json;odata = verbose'
}
};

$HTTP.Get(serverUrl,Config)
.успіх(функція(дані, статус, заголовки, Config) {

VAR getLinksResponse = даних;

getLinksResponse.d.results.forEach(функція(theResult) {

// і так далі і так піни

Це тільки перетворився на 30 хвилина проблема для нас, так ми пощастило. Ми сподіваємося хтось вважає, що це корисна.

</кінець>

Як-к: Увімкнути кілька кутових SharePoint веб-частини на одній сторінці

Цей блог посад описує, як ви можете мати кілька Angular.js на основі веб-частини SharePoint (посилання за допомогою веб-частини редактора вмісту) на одній сторінці. Я дзвоню контент-редактор веб-частини (CEWP) який посилається JavaScript, побудований з використанням Angular.js рамках послугами "Кутовий веб-частини."

Bootstrap процес кутової, це просто супер, і майже кожен приклад, ви знайдете на Інтернет йде щось на зразок цього:

<HTML ng-app = 'myApp'>

<бла /><бла /><бла />

</HTML>

Це виходить з ладу, Однак, Щоб увімкнути кілька CEWP, що представляють кілька кутових веб-частин на одній сторінці. Кутовий буде тільки автоматично завантаженні проти першої директиви ng-app знахідки – щонайменше починаючи з кутовою версії 1.3.6. Рішення досить проста – вручну завантаженні вашого коду замість. Вище тепер змін щось на зразок цього:

<тіло>
<d
IV id =”bootstrapHere” NG контролер =”myController як theController”>
<бла /><бла /><бла />
</DIV>
</тіло>

<скрипт src =”//Ajax.googleapis.com/AJAX/libs/angularjs/1.3.6/angular.js”></сценарій>

<сценарій>
angular.Bootstrap(angular.Element(document.getElementById(“bootstrapHere”)),['myApp']);
</сценарій>

В основному, Замість того щоб використовувати ng-app на елемент робити ваші початкова завантаження, ви вдарите ID на цей елемент. Потім, використовувати початкового завантаження() метод на кутових сам контролювати, що початкова завантаження процесу під час роботи. Я це перевіряв це три різні кутові веб-частин на тій же сторінці, і вона працює Шарм.

</кінець>

undefinedПідписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin