Скорее всего, вы получаете эту ошибку, поскольку sp.taxonomy.js
библиотека не была загружена, и в этом случае значение систематики поля возвращается как «легкий» объект (нетSP.Taxonomy.TaxonomyFieldValueCollection object type).
Вариант 1 (рекомендуется): получение получение множества значений поля таксономии с sp.taxonomy
библиотекой
Прежде всего, я бы рекомендовал этот подход, поскольку SP.Taxonomy
пространства имен обеспечивает не только стандартный способ для решения значений таксономии поля, но также способ работы с API управляемых метаданных через JSOM.
В следующем примере показан, как:
Пример:
SP.SOD.registerSod('sp.taxonomy.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js'));
SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function() {
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var item = list.getItemById(itemId);
ctx.load(item);
ctx.executeQueryAsync(
function(){
var fieldVal = item.get_item(fieldName);
for(var i = 0; i < fieldVal.get_count(); i++) {
var label = fieldVal.get_item(i).get_label();
var guid = fieldVal.get_item(i).get_termGuid();
//...
}
},
function(sender,args){
console.log(args.get_message());
});
});
Вариант 2: получение множественного поля таксономии значения безsp.taxonomy.js
библиотеки загружены
Когда sp.taxonomy
библиотека не загружен, значение систематики поля все еще может быть восстановлена с помощью _Child_Items_
собственности, как показано ниже:
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var item = list.getItemById(itemId);
ctx.load(item);
ctx.executeQueryAsync(
function(){
var fieldVal = item.get_item(fieldName)._Child_Items_;
for(var i = 0; i < fieldVal.length; i++) {
var label = fieldVal[i].Label;
var guid = fieldVal[i].TermGuid;
//...
}
},
function(sender,args){
console.log(args.get_message());
});
@Thriggle: есть ли у вас какие-либо предложения? – ysfibm