在 Riot.js 表达式中调用全局函数
Calling global function in Riot.js expression
我正在尝试从 Riot.js.
中的表达式调用在全局命名空间中声明的函数
这不起作用:
<strong>Created { getDateString(item.created) } by { item.creator }</strong>
我可以调用全局moment()
函数(来自moment.js):
<strong>Created { moment(item.created) } by { item.creator }</strong>
包含此函数 的整个 JavaScript 文件已加载 ...如果我从 this.on('mount')
调用 getDateString() 它有效:
this.on('mount', function() {
getDateString(new Date());
});
我不太明白命名空间在 Riot.js 中是如何工作的,所以我不明白为什么我对 getDateString() 的调用在表达式中失败但在挂载函数中成功。有人可以告诉我我做错了什么吗?
确保您的 globalFunction()
声明为全局。标签定义中 <script>
标签的范围不是全局的。保重。
<my-tag>
<p>{ someGlobalFunction(message) }</p><!-- will work -->
<p>{ localFunction1(message) }</p><!-- won't work -->
<p>{ localFunction2(message) }</p><!-- will work -->
<p>{ localFunction3(message) }</p><!-- will work -->
<script>
this.message = 'world'
// Not reachable from the template
function localFunction1 (arg) {
return 'Hello ' + arg + '!'
}
// Reachable because this is the same as localFunction3
localFunction2 (arg) {
return 'Hello ' + arg + '!'
}
// Reachable from the template
this.localFunction3 = function(arg) {
return 'Hello ' + arg + '!'
}.bind(this)
</script>
</my-tag>
我正在尝试从 Riot.js.
中的表达式调用在全局命名空间中声明的函数这不起作用:
<strong>Created { getDateString(item.created) } by { item.creator }</strong>
我可以调用全局moment()
函数(来自moment.js):
<strong>Created { moment(item.created) } by { item.creator }</strong>
包含此函数 的整个 JavaScript 文件已加载 ...如果我从 this.on('mount')
调用 getDateString() 它有效:
this.on('mount', function() {
getDateString(new Date());
});
我不太明白命名空间在 Riot.js 中是如何工作的,所以我不明白为什么我对 getDateString() 的调用在表达式中失败但在挂载函数中成功。有人可以告诉我我做错了什么吗?
确保您的 globalFunction()
声明为全局。标签定义中 <script>
标签的范围不是全局的。保重。
<my-tag>
<p>{ someGlobalFunction(message) }</p><!-- will work -->
<p>{ localFunction1(message) }</p><!-- won't work -->
<p>{ localFunction2(message) }</p><!-- will work -->
<p>{ localFunction3(message) }</p><!-- will work -->
<script>
this.message = 'world'
// Not reachable from the template
function localFunction1 (arg) {
return 'Hello ' + arg + '!'
}
// Reachable because this is the same as localFunction3
localFunction2 (arg) {
return 'Hello ' + arg + '!'
}
// Reachable from the template
this.localFunction3 = function(arg) {
return 'Hello ' + arg + '!'
}.bind(this)
</script>
</my-tag>