错误:集合还没有初始化
ERROR: 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());
});
}
当客户端对象模型为您返回一个对象集合时,如果每个对象都有自己的子集合,它们将不会被初始化,除非您显式地要求加载它们。
与这里提供的答案类似,您应该能够使用一个额外的参数来更新对context.load()
的调用,告诉它要加载什么。
我相信下面的代码可以工作,但我还没有测试过:
context.load(terms,"Include(Name,Terms,Terms.Include(Name))");
相关文章:
- Array.map没有'似乎无法处理未初始化的数组
- TinyMCE没有'无法进行第二次初始化
- 有没有一种方法可以获得用{}初始化的对象的原型
- 如何在没有登录按钮的情况下初始化谷歌登录
- 在CKEditor 4.x中,有没有办法在初始化后获取允许的标签列表
- 有没有办法初始化保留初始 HTML 的 Vue 对象
- 身体负荷的替代品 - 似乎没有初始化
- 如何初始化没有默认值的 BackboneJS 模型
- 为什么插件没有动态初始化
- 我在 MAP 初始化时创建了一个默认标记,但标记没有显示内容?我能为它做些什么
- 为什么下面的代码没有初始化我的 JavaScript 对象
- 有没有办法将初始化函数传递给轨道幻灯片
- JavaScript 在没有全局变量初始化值的情况下得到错误
- javascript初始化一个没有new关键字的对象
- 为什么谷歌地图显示灰色,而没有初始化缩放&当使用jQuery按钮更改缩放时,居中,地图上的居中效果非常好
- 对象#<HTML输入元素>没有方法'初始化'
- 在第二次调用geteneration时,集合还没有初始化
- 错误:集合还没有初始化
- 信号r:连接还没有完全初始化.使用.start().done()或.start().fail()在连接启动后运行逻辑
- 集合还没有初始化- Sharepoint Javascript