0

Я пытаюсь получить термины из термина магазина с помощью JavaScript, он работает просто отлично с этим кодом: Получить метку одного поля таксономии:Как получить многозначное таксономическое поле от термина магазина SharePoint онлайн

var fieldValue = item.get_item("FieldName"); 
var fieldLabel = fieldValue.Label; 

У меня есть одна проблема для получения меток многозначного поля таксономии? Я попытался это

var fieldValue = item.get_item("FieldName"); 
var taxEnumerator = fieldValue.getEnumerator(); 
while(taxEnumerator.moveNext()){ 
    var currentTerm = taxEnumerator.get_current(); 
    var label = currentTerm.Label; 
    // do something with the label here 
} 

Но это не работает

+0

@Thriggle: есть ли у вас какие-либо предложения? – ysfibm

ответ

2

Скорее всего, вы получаете эту ошибку, поскольку sp.taxonomy.js библиотека не была загружена, и в этом случае значение систематики поля возвращается как «легкий» объект (нетSP.Taxonomy.TaxonomyFieldValueCollection object type).

Вариант 1 (рекомендуется): получение получение множества значений поля таксономии с sp.taxonomy библиотекой

Прежде всего, я бы рекомендовал этот подход, поскольку SP.Taxonomy пространства имен обеспечивает не только стандартный способ для решения значений таксономии поля, но также способ работы с API управляемых метаданных через JSOM.

В следующем примере показан, как:

  • обеспечения sp.taxonomy.js библиотека была загружена
  • получить множественное значение таксономии поля, которое представляет SP.Taxonomy.TaxonomyFieldValueCollection object

Пример:

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()); 
    }); 
Смежные вопросы