Office365 Binding-按word文档中的层次结构对绑定进行排序(角度)

Office365 Binding-按word文档中的层次结构对绑定进行排序(角度),office365,office-js,office365api,office-addins,word-addins,Office365,Office Js,Office365api,Office Addins,Word Addins,我们正在开发一个Office应用程序,其中包含选定文本的存储。我们将所有选定的文本保存在绑定列表中。但我们需要在整个文档中按选定文本的范围对列表进行排序。但是函数getAllAsync()返回Binging的随机列表 我们如何在文档中按层次结构对这些绑定进行排序 例如: 文本1(先选定) 文本2(选定的第三个) 文本3(选定秒) -- 我们需要排序列表,如: 文本1 文本2 文本3 不是随机列表 是的,你可以!这里的关键是要记住,创建绑定实际上是向文档中添加内容控件,因此您需要做的是使用应用于所

我们正在开发一个Office应用程序,其中包含选定文本的存储。我们将所有选定的文本保存在绑定列表中。但我们需要在整个文档中按选定文本的范围对列表进行排序。但是函数getAllAsync()返回Binging的随机列表

我们如何在文档中按层次结构对这些绑定进行排序

例如:

文本1(先选定) 文本2(选定的第三个) 文本3(选定秒)

--

我们需要排序列表,如:

  • 文本1

  • 文本2

  • 文本3


  • 不是随机列表

    是的,你可以!这里的关键是要记住,创建绑定实际上是向文档中添加内容控件,因此您需要做的是使用应用于所选内容或文档正文的contentControls集合,并遍历它以获得读取顺序。(顺便说一句,你的问题不清楚你是否只需要选择或所有的文件,但我会解释两者)

    现在,在样本之前进行一些澄清:

  • 实际上,bindings.getAllAsync()方法与读取顺序不匹配,但也不是随机的。它实际上按照创建顺序返回绑定,这对于您的场景来说似乎没有什么用处
  • 另一方面,集合(范围可以是一个选择或文档正文)将以文档的阅读顺序获得范围内的所有内容控件。请注意,此集合将包括带绑定和不带绑定的内容控件。因此,您需要确保在创建绑定时,以一种能够在以后识别它们的方式进行操作,这很简单,因为使用新API,您可以插入内容控件,设置其标题,然后使用该方法使用标题创建绑定。您还可以设置内容控件的标记,以便在解决方案的上下文中标识这表示绑定
  • 下面是一个示例,说明如何创建内容控件并向其添加绑定,然后是另一个示例,说明如何使用contentControls集合按读取顺序遍历绑定:

    创建绑定:

    函数insertContentControlWithBinding(){
    Word.run(函数(上下文){
    //首先,我们在选择项上插入ContentControl,然后设置标题和标记,最后创建绑定。
    var myContentControl=context.document.getSelection().insertContentControl();
    加载(myContentControl);
    返回context.sync()
    .然后(函数(){
    myContentControl.title=“identifier”;//稍后将使用该选项创建绑定。
    myContentControl.tag=“BOUND”//用于标记为绑定内容控件。
    返回context.sync()
    .then(函数(上下文){
    Office.context.document.bindings.addFromNamedItemAsync(“标识符”,Office.BindingType.Text,{},函数(结果){
    if(result.status=Office.AsyncResultStatus.successed){
    console.log(“成功创建绑定”)
    }
    })
    })    
    })
    }).catch(函数(e){
    控制台日志(e.message);
    })
    
    }
    有可能吗?您好!有趣的问题,我需要一些澄清。1) 你说的等级制度是什么意思?您指的是绑定在文档读取顺序中的顺序吗?(自上而下)2。不确定我是否理解示例3绑定中的“将所有选定文本保存在绑定列表中”是什么意思?就一个装订?您的问题是如何按照读取顺序获取所选内容中的绑定?请澄清,以便我能提供更好的指导。谢谢“您指的是绑定在文档阅读顺序中的顺序吗”-是的,从上到下;-“在您的示例中有3个绑定”->是的,我有3个绑定(Office.Binding的3个对象);我需要所有绑定的列表,这些绑定按照文档的阅读顺序-可能吗?可能吗?有什么想法吗?是的,很抱歉耽搁了,请检查下面我的答案。。。
                                Office.context.document.bindings.getAllAsync((result: Office.AsyncResult) => {             
                                    if (result.status == Office.AsyncResultStatus.Succeeded) {
                                        for (let attBinding of result.value) {
                                            var binding = attBinding as Office.Binding;  
                                        }
                                    } 
                                })