【问题标题】:Changing alignment inside a ContentControl with Office.js使用 Office.js 更改 ContentControl 内的对齐方式
【发布时间】:2018-05-24 04:47:19
【问题描述】:

我有以下代码:

Word.run(context => {
  var range = context.document.getSelection();
  var cc = range.insertContentControl();
  var ccRange = cc.insertHtml(myContent, 'replace');
  // ...

它工作正常。例如,如果我将文档对齐设置为Justified,则新 ContentControl 中的内容也将是Justified。我知道用户可以简单地选择内容并更改对齐方式,但我需要将其默认设置为Left

我知道如何处理字体以确保它遵循与文档相同的样式,为此我的代码紧跟上面的代码:

  // ...
  context.load(range, 'font');
  context.load(ccRange, 'font');

  context.sync().then(() => {
    ccRange.font.color = range.font.color;
    ccRange.font.highlightColor = range.font.highlightColor;
    ccRange.font.name = range.font.name;
    ccRange.font.size = range.font.size;
    // ...

基于这个例子,我想有一种类似的方法可以改变 ContentControl 内部的对齐方式,但到目前为止我失败了。

如果我理解正确的话,ContentControl 有一个paragraphs 属性,一个段落有一个alignment 属性,所以我猜这就是我需要的,但我几次尝试访问它都没有产生任何结果(例如@ 987654328@,然后在上下文同步后访问该属性。

这样做的正确方法是什么?

【问题讨论】:

    标签: javascript ms-word office-js


    【解决方案1】:

    我发现“加载”变量而不是上下文更容易一些,但无论哪种方式都有效。

    您加载 'paragraphs' 就像您加载 'font' 一样。您还可以使用'paragraphs, font' 同时加载它们,让事情变得更简单。

    例如,这段代码将插入一个ContentControl,插入一些HTML内容并将alignment设置为'centered'

    return Word.run(function (context) {
        let range = context.document.getSelection();
        let cc = range.insertContentControl();
        let ccRange = cc.insertHtml('<b>Hello World</b>', 'Replace');
    
        ccRange.load('font, paragraphs');
        return context.sync().then(() => {
            ccRange.paragraphs.items[0].alignment = 'Centered';
            return context.sync();
        });
    });
    

    【讨论】:

    • 是的,这对我有用,谢谢。我错过了items 部分。我正在尝试,除其他外,像这样:.paragraphs[0].paragraphs.m_items[0](我在日志中看到的一个道具,但它看起来确实像一个内部道具)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多