Не уверен, что я делаю не так здесь, потому что этот код работает в других местах, где я его использовал, но ... в SharePoint есть элемент управления на стороне клиента, который иногда может занять немного времени для рендеринга и начать, прежде чем мы можем что-то сделать с этим. Итак, я придумал небольшой трюк, чтобы проверить и проверить, загружены ли соответствующие библиотеки и готовы ли они к использованию, прежде чем я попытаюсь что-то сделать. Это очень простая вещь:
function createSPPeoplePicker(field){
var onPickerInit = function() {
if(SPClientPeoplePicker && SPClientPeoplePicker.SPClientPeoplePickerDict){
var spPP = SPClientPeoplePicker.SPClientPeoplePickerDict[field];
//Now do stuff with the field.
} else {
setTimeout(function() {
onPickerInit();
}, 100);
}
}
onPickerInit();
}
Итак, в принципе, если существуют объекты SPClientPeoplePicker и SPClientPeoplePicker.SPClientPeoplePickerDict , существуют , тогда делайте вещи. В противном случае, подождите галочку, затем проверьте снова.
Это работало более или менее безупречно на многих других приложениях, которые я построил в нашей среде, но теперь на этом. Я не могу помочь, но думаю, что я делаю ошибку JavaScript, а не ошибку SharePoint, так как я получаю Uncaught Reference Error, выкрикивая мне, что SPClientPeoplePicker не определен, когда я проверяю, определено оно или нет. Undefined больше не читается как "ложь"? Я скучаю по чему-то еще глупому?
Цените ваше время, ребята, и ваше терпение для работы с агрессивно плохим разработчиком.