我有一个Web组件Login,其中有一个LoginState字段。我想传递一个LoginState实例(可以在代码的其他部分进行设置),然后将其添加到Login实例中,然后再创建方法。

这可能吗?如果没有,我有什么选择?我唯一能想到的是使用一个全局变量来保存LoginState实例并对其进行引用,这似乎不是一个好主意。

最佳答案

的确,在实例化组件时,可以使用以下语法

<x-custom-element a-field-name="{{expression}}"></x-custom-element>

该表达式将被求值,并且您在CustomElement类中定义的名称为aFieldName的任何字段都将使用{{expression}}(see relevent discussion)的值初始化。就个人而言,我不建议传递类似您的登录状态的信息,因为它会使您的站点极易受到XSS攻击的侵害...

也许更好的主意是在组件类上公开一个方法,该方法允许您在初始化后设置登录状态。将元素插入DOM之后,可以使用query('#myLoginStateId').xtag访问元素的字段,然后以登录状态调用公开的方法。

在将元素插入到DOM中之前,您将无法访问该元素上的xtag,因此请确保在元素的insert()方法中引发一个适当的事件,以便应用程序的其余部分知道何时可以安全地设置适当的 Realm 。

10-08 20:10