作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试从 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/
我是一名优秀的程序员,十分优秀!