0

我创建了 2 个函数。我从“createNewOne”中调用“findTitleNew”。我在“createNewOne”函数中找到了一个文档,但是当我返回函数“findTitleNew”时,我丢失了在“findTitleNew”中找到的文档如何继续而不丢失该文档?注意:这个函数是通用的,因为我在应用程序中不止一次使用这些函数。

<xp:button value="Create" id="btnCreate">
            <xp:eventHandler event="onclick" submit="true"
                refreshMode="complete" immediate="false" save="true">
                <xp:this.action><![CDATA[#{javascript:createNewDoc(document1)}]]></xp:this.action>
            </xp:eventHandler>
        </xp:button>


function findTitleNew(currDoc:NotesXSPDocument)
{
    try
    {
        var dbOther1:NotesDatabase = session.getDatabase(database.getServer(),sessionScope.kontak_db_Path);
        if (currDoc.getItemValueString("UNID")!="")
        {
            var otherDoc:NotesDocument = dbOther1.getDocumentByUNID(currDoc.getItemValueString("UNID"))
        }
    }
    catch (e) 
    {
        requestScope.status = e.toString();
    }
}

function createNewOne(docThis:NotesXSPDocument)
{
    try
    {
        //do stafff
        findTitleNew(docThis)
        //do stafff
    }

    catch (e) 
    {
        requestScope.status = e.toString();
    }
}

任何建议表示赞赏。
康胡尔阿塔

4

2 回答 2

1

我的 SSJS 真的生锈了,我有点难以准确说出你想要什么但你说:“我丢失了在“findTitleNew”中找到的文档如何继续而不丢失该文档?”

您的函数“findTitleNew”不返回任何内容。所以如果你在那里得到一个文档,你可以使用它,但是如果你想在“createNewOne()”函数中移动,你需要返回找到的文档

 if (currDoc.getItemValueString("UNID")!="")
        {
            var otherDoc:NotesDocument = dbOther1.getDocumentByUNID(currDoc.getItemValueString("UNID"))
return otherDoc;
        }

然后 :

function createNewOne(docThis:NotesXSPDocument)
{
    try
    {
        //do stafff
        var returnDoc = findTitleNew(docThis);
        if (null != returnDoc) {
            // do stuff with returnDoc here...
        }
        //do stafff
    }

    catch (e) 
    {
        requestScope.status = e.toString();
    }
}
于 2016-04-12T14:00:32.443 回答
0

这是关于你的变量的范围otherDoc

您将变量定义为var otherDoc. 声明的变量的范围var是它的当前执行上下文,它要么是封闭函数,要么是在任何函数之外声明的变量,是全局的。
var otherDoc在函数中定义,因此它仅在函数中“存在”。这意味着otherDoc在函数之外不可用。

otherDoc您可以在不声明的情况下为其赋值。在这种情况下,它将是全球可用的。但不建议这样做,因为代码会变得非常混乱。

return otherDoc最好的方法是用大卫在他的答案中显示的那样返回变量。

于 2016-04-12T19:11:11.983 回答