Я запрашиваю содержимое управляемых метаданных, используя следующий код. Я встретив ошибкуОШИБКА: коллекция не была инициализирована
The collection has not been initialized
, когда я нахожусь в var level2TermsEnum = level2Terms.getEnumerator();
Я прочитал, что это из-за отсроченной и обещание JavaScript, и я не могу понять это. Может быть, вы могли бы помочь мне пролить свет здесь.
$(document).ready(function() {
var scriptbase = _spPageContextInfo.webServerRelativeUrl + "/_layouts/15/";
$.getScript(scriptbase + "SP.Runtime.js",
function() {
$.getScript(scriptbase + "SP.js", function() {
$.getScript(scriptbase + "SP.Taxonomy.js", function() {
context = SP.ClientContext.get_current();
var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
//Term Stores
var termStores = taxSession.get_termStores();
//Term Store under which to create the group.
var termStore = termStores.getByName("Managed Metadata Service");
var termSet = termStore.getTermSet("7b6ee52v-3709-4181-a14d-b953f2ad0aad");
//Call your code here.
GetTermsFromTaxonomyStore();
});
});
});
var json = "";
function GetTermsFromTaxonomyStore() {
//Current Context
var context = SP.ClientContext.get_current();
//Current Taxonomy Session
var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
var termStores = taxSession.get_termStores();
//Term Store under which to create the term.
//var termStore = taxSession.getDefaultSiteCollectionTermStore();
var termStore = termStores.getByName("Managed Metadata Service");
//Pass ID of the Meetings Term Set
var termSet = termStore.getTermSet("7b6ee52v-3709-4181-a14d-b953f2ad0aad");
var terms = termSet.get_terms();
context.load(terms);
context.executeQueryAsync(function() {
var level1Terms = terms.getEnumerator();
while (level1Terms.moveNext()) { //iterate thru Level1
var level1 = level1Terms.get_current();
if (level1.get_termsCount() > 0) { //check if Level1 has child
var level2Terms = level1.get_terms(); //get level2 terms of level 1 term
**var level2TermsEnum = level2Terms.getEnumerator();**
while (level2TermsEnum.moveNext())
{
var level2Term = level2TermsEnum.get_current();
var level2TermName = level2Term.get_name();
termsList += '"Level1":"' + level2Term.get_name() + '","Level2":"' + level2TermName + '"';
}
}
//console.log(currentTerm.get_name());
}
alert(termsList);
}, function (sender, args) {
console.log(args.get_message());
});
}
Спасибо за это, но где я могу получить список объектов/параметров для загрузки? – Aventus
@ Aventus 'terms' представляет собой набор объектов Microsoft.SharePoint.Taxonomy.Term, поэтому вы можете найти его список свойств-членов здесь: https://msdn.microsoft.com/EN-US/library/office/microsoft. sharepoint.taxonomy.term_members.aspx – Thriggle