javascript - 使用javascript获取导航词

标签 javascript sharepoint sharepoint-2013

有没有人尝试过使用 Javascript API 在 Sharepoint 中获取 Navigation Term?我在 MSDN 中找到了代码,但没有任何使用它的线索。

http://msdn.microsoft.com/en-us/library/office/jj994618(v=office.15).aspx

能否请您告诉我如何使用 javascript 获取当前页面导航词或通过 id 获取导航词?

谢谢。

最佳答案

您可以利用 SP.Publishing.Navigation.NavigationTermSet.getAsResolvedByWeb Method检索导航术语集对象。以下示例演示了如何检索 Navigation Term Set 对象并查找 Navigation Term:

SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
     SP.SOD.registerSod('sp.taxonomy.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js'));
     SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function () {
        SP.SOD.registerSod('sp.publishing.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.publishing.js'));
        SP.SOD.executeFunc('sp.publishing.js', 'SP.Publishing.Navigation.NavigationTermSet', function () {

            var navTermSetId = 'ccef718f-fc01-4d27-b877-431f2e4bf136';    
            var navTermId = '1b04f1b2-f5f4-4c7b-a87f-28fb8665824b';
            loadNavigationTermSet(navTermSetId,
               function(navTermSet){
                   for(var i = 0;i < navTermSet.get_terms().get_count();i++) {
                     var navTerm = navTermSet.get_terms().getItemAtIndex(i);      
                     if(navTerm.get_id().toString() == navTermId){
                        console.log(navTerm.get_taxonomyName());
                     }
                   }
               },
               function(sender, args)
               {
                   console.log('Request failed ' + args.get_message() + ':'+ args.get_stackTrace());
               }
            );            
        });            
     });
});

在哪里

function loadNavigationTermSet(navTermSetId,success,error)
{
   var ctx = SP.ClientContext.get_current();
   var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(ctx);

   var termStore = taxonomySession.getDefaultSiteCollectionTermStore(); //retrieve default Term Store
   var termSet = termStore.getTermSet(navTermSetId);
   var navTermSet = SP.Publishing.Navigation.NavigationTermSet.getAsResolvedByWeb(ctx,termSet, ctx.get_web(), "GlobalNavigationTaxonomyProvider");

   ctx.load(navTermSet,'Terms');
   ctx.executeQueryAsync(function(){
        success(navTermSet);
    },
    error);
}

例子2

以下示例演示了如何检索 Navigation Terms:

SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function () {
     SP.SOD.registerSod('sp.taxonomy.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js'));
     SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function () {
        SP.SOD.registerSod('sp.publishing.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.publishing.js'));
        SP.SOD.executeFunc('sp.publishing.js', 'SP.Publishing.Navigation.NavigationTermSet', function () {

            var navTermSetId = 'ccef718f-fc01-4d27-b877-431f2e4bf136';    
            loadNavigationTerms(navTermSetId,
               function(navTerms){
                   for(var i = 0;i < navTerms.get_count();i++) {
                     var navTerm = navTerms.getItemAtIndex(i);      

                     console.log(navTerm.get_id().toString());
                     console.log(navTerm.get_title().get_value());
                     console.log(navTerm.get_categoryImageUrl());
                   }
               },
               function(sender, args)
               {
                   console.log('Request failed ' + args.get_message() + ':'+ args.get_stackTrace());
               }
            );            
        });            
     });
});

在哪里

function loadNavigationTerms(navTermSetId,success,error)
{
   var ctx = SP.ClientContext.get_current();
   var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(ctx);

   var termStore = taxonomySession.getDefaultSiteCollectionTermStore(); //retrieve default Term Store
   var termSet = termStore.getTermSet(navTermSetId);
   var navTermSet = SP.Publishing.Navigation.NavigationTermSet.getAsResolvedByWeb(ctx,termSet, ctx.get_web(), "GlobalNavigationTaxonomyProvider");

   var navTerms = navTermSet.get_terms();
   ctx.load(navTerms,'Include(Id,Title,CategoryImageUrl)');
   ctx.executeQueryAsync(function(){
        success(navTerms);
    },
    error);
}

关于javascript - 使用javascript获取导航词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27644014/

相关文章:

javascript - 如何在每行和每列中生成随机数

javascript - 捕获 div 类的内容,包括 CSS 样式

javascript - 使用 ajax REST 使用从 SharePoint 列表中提取的数据进行 jQuery 自动完成

Sharepoint:有什么方法可以获取查找列表的其他列的值吗?

rest - OData substringof 或startswith 返回所有项目

sharepoint - 工作流程中是否有一个 Activity 会返回它的实例 ID

c# - "Encoded"SharePoint 客户端对象模型中的登录名

javascript - Safari 推送通知 - Javascript 未正确检查浏览器

javascript - Typescript - 对装饰器的循环依赖

html - XSLT 将目标 ="_blank"添加到 URL