我正在寻找一种方法来使用Javascript查询Taxonomy.js,以获得基于术语名称的术语(我没有在页面上提供ID)。
我能找到的唯一选项是检索TermSet中的所有术语,遍历每个术语以匹配名称。
这样可行,但会导致性能问题。我正在寻找一种直接获得术语的方法,而不需要遍历所有。
答案 0 :(得分:0)
我终于能够把它拼凑在一起了。
var context = SP.ClientContext.get_current();
var session = SP.Taxonomy.TaxonomySession.getTaxonomySession(context);
var termStore = session.getDefaultSiteCollectionTermStore();
var parentTermId = 'd89595cf-7d0d-4f19-8e14-8b8b05efb7de'; // Some parent term
var parentTerm = termStore.getTerm(parentTermId);
// arguments are termLabel, language code, defaultLabelOnly, matching option, max num results, trim unavailable
var terms = parentTerm.getTerms(series,1033,true,SP.Taxonomy.StringMatchOption.exactMatch,1,true);
context.load(terms);
context.executeQueryAsync(
function(){
//print child Terms
for(var i = 0; i < terms.get_count();i++){
var term = terms.getItemAtIndex(i);
console.log(term.get_name());
console.log(term.get_description());
}
},
function(sender,args){
console.log(args.get_message());
});
如果你知道一个父条款的指导,你可以使用它,然后在下面得到一个特定的术语。在我们的案例中,父母一词只有一个级别的孩子,所以我没有检查它是否搜查了孩子的孩子。
还有TermSet.getTerms()方法,它将labelMatchingInformation对象作为其参数。这是the documentation和a blog about it。我无法让lmi工作,但在博客中他似乎直接将它应用于分类法,我认为它应该应用于一个术语集,所以也许这就是差异。