2017-08-08 39 views
2

问题

使用MS Word中的办公室的JavaScript API的一个子,我知道如何使用document.bindings.addFromSelectionAsync当前选择绑定,但是,我还没有找到绑定的子字符串的方式的当前选择。办公室的JavaScript API:绑定选择

例如,如果用户选择了整个段落,并且我只想绑定第一个单词,我该如何才能做到这一点?

无法接近

  1. 首先结合的选择,然后结合一个字符串,然后除去第一结合:我还没有找到绑定一个字符串的方式。
  2. 首先更改选择,然后使用addFromSelectionAsync:我还没有找到改变选择的方法。

回答

2

在Word中绑定被物理文档中的内容控制为代表,所以一般的做法是建立在你需要它(在这种情况下,在选择的第一个字)的内容控制和分配标题,以便最终您可以使用bindings.addFromNamedItem方法创建绑定。

总结:

  1. 要在其中创建绑定获取范围。在这种情况下,您需要选择内的第一个单词。
  2. 一旦你有了范围,用一个内容控件包装并分配一个标题。
  3. 最后,使用该标题的addFromNamedItem。

这里有一个例子:

Word.run(function (context) { 
 
     //first we get the first word in the selection by using the split method, and using space as delimiter and then we add a content control 
 
     var firstWordContentControl = context.document.getSelection().split([" "], true, false, true).getFirst().insertContentControl(); 
 
//let's add a title. 
 
     firstWordContentControl.title = "BindingID"; 
 
     return context.sync() 
 
      .then(function() { 
 
//we reuse the title to create the binding. 
 
       Office.context.document.bindings.addFromNamedItemAsync("BindingID", "text", {}, function (result) { 
 
        console.log(result.status); 
 
        if (result.status == "succeeded") { 
 
         // lets create an event! 
 
         result.value.addHandlerAsync(Office.EventType.BindingSelectionChanged, function() { 
 
          console.log("event happened"); 
 
         }) 
 
        } 
 
       }); 
 
      }) 
 
    }) 
 
     .catch(function(exception) { 
 
     OfficeHelpers.Utilities.log(exception); 
 
    })

希望这有助于。 -Juan

2

虽然不完全是你在找什么,Word API给你大部分你需要做到这一点。

用户的当前选择可以使用document.getSelection()获取。这返回Range object。从这里您可以钻取Paragraphs,child ranges(基于分词规则)等。

一旦你反映你正在寻找的文本Range对象,range.Select()将导致UI被选择的范围。从这里你可以使用addFromSelectionAsync建立你的绑定。