Javascript 如何访问MarkoJS中非顶级组件中的“$global”或“out.global”?
我试图从Marko组件访问全局变量,但得到的是Javascript 如何访问MarkoJS中非顶级组件中的“$global”或“out.global”?,javascript,marko,Javascript,Marko,我试图从Marko组件访问全局变量,但得到的是未捕获引用错误:out未定义 class { onClick(event) { console.log(out.global.message) event.preventDefault() } } 不应该out.global/$global到处都可以访问吗?out可用于某些生命周期方法中的组件--onCreate(input,out),onInput(input,out),以及onRender(out
未捕获引用错误:out未定义
class {
onClick(event) {
console.log(out.global.message)
event.preventDefault()
}
}
不应该
out.global
/$global
到处都可以访问吗?out
可用于某些生命周期方法中的组件--onCreate(input,out)
,onInput(input,out)
,以及onRender(out)
。在其中一种情况下,为该分配您想要的值,以便在类中的其他位置访问该值:
class {
onCreate(input, out) {
this.message = out.global.message
}
onClick(event) {
console.log(this.message)
event.preventDefault()
}
}
对于非顶级组件,状态和属性不会自动序列化,因此上述代码将导致在服务器上的组件中设置
this.message
,但在客户端上该属性将未定义
要使客户机上的out.global.message
对非顶级组件可用,必须更改呈现函数以指定它应序列化,如中所示:
如果我不希望我的全局变量被序列化(例如,如果我的变量是函数),并且我需要在非顶级组件中使用这个全局函数,该怎么办?
template.render({
$global: {
serializedGlobals: {
message: true
}
}
}, res);