Ms office Office JS与识别列表项有关的问题

Ms office Office JS与识别列表项有关的问题,ms-office,office-js,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

我试图在文档末尾添加一个段落,避免在列表中添加新添加的段落(如果文档以列表结尾)

我有以下代码:

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条件内中断,就像我写的
段落.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"

listItemOrNullObject
如果不是
ListItem
,将返回空对象。从概念上讲,如果询问“这是列表项还是不是列表项”,实际上也会返回true,那么您就是


如果您试图从一个不存在的列表中分离,则失败。我想看看
isListItem
。这将明确告诉您该段落是否为
ListItem
,因此您仅在它实际上是列表的一部分时执行
p.detachFromList()

这里的问题是*.isNullObject方法/属性不返回常规的js'null'对象,而是返回NullObject(一种特殊的框架类型null)

看看这段代码,我重写了它,我认为这是一种更有效的方式。请原谅我的js,你可以把它移植到ts

希望这有帮助

Word.run(函数(上下文){
var listI=context.document.body.parations.getLast().listItemOrNullObject;
context.load(listI);
返回context.sync()
.然后(函数(){
if(listI.isNullObject){//检查我是如何验证它是否为null的。
log(“末尾没有列表”)
}
否则{
context.document.body.parations.getLast().detachFromList();
context.document.body.parations.getLast().leftIndent=0;
返回context.sync();
}
})

})
请提供您收到的错误消息。这将帮助人们更快地关注这个问题。你是对的,现在更新票证尝试替换它,得到:
属性“isListItem”不可用。在读取属性的值之前,在包含对象上调用load方法,并在关联的请求上下文上调用“context.sync()”。
,但我所做的一切都打包在:
返回context.sync()。然后(()=>{…}
对不起,我假设您在同步之后已经在调用了。您需要执行一个sync()在读取属性之前,除非您明确要求,否则不会填充任何属性。请查看有关如何在本地填充数据的信息。是的,这样做了,我只是将其添加到
context.load(段落“…”)中
呼叫已经存在。谢谢!查看我的回答我认为问题在于您没有正确检查其空值,请检查我的样本。很抱歉,这是一个我们需要如何处理空值的问题。干杯。谢谢,现在我知道它的用法了。