Office JS问题,识别ListItems

时间:2017-06-27 12:59:01

标签: ms-office office-js

我正在尝试在文档的末尾添加一个段落,并且无法在列表中添加新添加的段落(如果文档以列表结尾)。

我有以下代码:

let paragraph = paragraphs.items[paragraphs.items.length - 1]
let p = paragraph.insertParagraph('', window.Word.InsertLocation.after)

if (paragraph.listItemOrNullObject) {
    p.detachFromList()
    p.leftIndent = 0
}

发生以下情况:如果有ListItem,代码可以正常工作。如果没有,它就会在if条件内打破,就像我写的paragraph.listItem一样。

这不应该像这样使用吗?

编辑 - 抛出错误:

name:"OfficeExtension.Error"
code:"GeneralException"
message:"GeneralException"
traceMessages:[] 0 items
innerError:null
▶debugInfo:{} 4 keys
    code:"GeneralException"
    message:"GeneralException"
    toString:function (){return JSON.stringify(this)}
    errorLocation:"Paragraph.detachFromList"

2 个答案:

答案 0 :(得分:2)

这里的问题是* .isNullObject方法/属性不会返回常规的js' null' object,但是一个NullObject(null的特殊框架类型)。

看看这段代码我改写了,我想以更有效的方式。原谅我的js,你可以把它移植到ts。

希望这会有所帮助。



Word.run(function (context) {
        var  listI = context.document.body.paragraphs.getLast().listItemOrNullObject;
        context.load(listI);
        return context.sync()
            .then(function () {
                if (listI.isNullObject) { // check out how i am validating if its null.
                    console.log("there is no list at the end")
                }
                else {
                    context.document.body.paragraphs.getLast().detachFromList();
                    context.document.body.paragraphs.getLast().leftIndent = 0;
                    return context.sync();
                }

            })
    })




答案 1 :(得分:1)

listItemOrNullObject如果不是ListItem,将返回一个空对象。从概念上讲,你if询问“这是一个列表项还是不是列表项”,它实际上也会返回true。

在这里失败了,你试图从一个不存在的列表中分离出来。我会看看isListItem。这将特别告诉您段落是否为ListItem,因此您只执行p.detachFromList(),而实际上它是列表的一部分。

相关问题