如何在 MarkoJS 的非顶级组件中访问“$global”或“out.global”?
How does one access `$global` or `out.global` in non-top-level components in MarkoJS?
我正在尝试从 Marko 组件访问全局变量,但我得到 Uncaught ReferenceError: out is not defined
。
class {
onClick(event) {
console.log(out.global.message)
event.preventDefault()
}
}
out.global
/$global
不应该随处可见吗?
out
可用于某些生命周期方法中的组件——onCreate(input, out)
、onInput(input, out)
和 onRender(out)
。在其中一个中,将您想要的值分配给 this
,以便在 class:
的其他地方访问它
class {
onCreate(input, out) {
this.message = out.global.message
}
onClick(event) {
console.log(this.message)
event.preventDefault()
}
}
对于非顶级组件,状态和属性不会自动序列化,所以上面的代码会导致 this.message
在服务器上的组件中设置,但是 属性 会在客户端未定义。
要使 out.global.message
在客户端对非顶级组件可用,您必须更改渲染函数以指定它应该被序列化,如 the docs on server-side rendering:
template.render({
$global: {
serializedGlobals: {
message: true
}
}
}, res);
我正在尝试从 Marko 组件访问全局变量,但我得到 Uncaught ReferenceError: out is not defined
。
class {
onClick(event) {
console.log(out.global.message)
event.preventDefault()
}
}
out.global
/$global
不应该随处可见吗?
out
可用于某些生命周期方法中的组件——onCreate(input, out)
、onInput(input, out)
和 onRender(out)
。在其中一个中,将您想要的值分配给 this
,以便在 class:
class {
onCreate(input, out) {
this.message = out.global.message
}
onClick(event) {
console.log(this.message)
event.preventDefault()
}
}
对于非顶级组件,状态和属性不会自动序列化,所以上面的代码会导致 this.message
在服务器上的组件中设置,但是 属性 会在客户端未定义。
要使 out.global.message
在客户端对非顶级组件可用,您必须更改渲染函数以指定它应该被序列化,如 the docs on server-side rendering:
template.render({
$global: {
serializedGlobals: {
message: true
}
}
}, res);