gpt4 book ai didi

javascript - 如何在 MarkoJS 的非顶级组件中访问 `$global` 或 `out.global` ?

转载 作者:行者123 更新时间:2023-12-03 03:10:19 35 4
gpt4 key购买 nike

我尝试从 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 {
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);

关于javascript - 如何在 MarkoJS 的非顶级组件中访问 `$global` 或 `out.global` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46976098/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com