按TermName获取SharePoint 2013分类法术语

时间:2015-07-29 02:47:17

标签: sharepoint sharepoint-2013 taxonomy

我正在寻找一种方法来使用Javascript查询Taxonomy.js,以获得基于术语名称的术语(我没有在页面上提供ID)。

我能找到的唯一选项是检索TermSet中的所有术语,遍历每个术语以匹配名称。

这样可行,但会导致性能问题。我正在寻找一种直接获得术语的方法,而不需要遍历所有。

1 个答案:

答案 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 documentationa blog about it。我无法让lmi工作,但在博客中他似乎直接将它应用于分类法,我认为它应该应用于一个术语集,所以也许这就是差异。