在Yii 2.0 guide中,它表示您可以在这样的树枝模板中注册Javascript代码:
{registerJs key='show' position='POS_LOAD'}
$("span.show").replaceWith('<div class="show">');
{/registerJs}
尝试了这一点,但它只会将整个代码段{registerJs ...
作为文本输出到网页上,而不会将其添加到网页的Javascript代码中。
registerJsFile
或registerCss
等类似命令也无效。
我错过了什么吗?谢谢!
修改
正如Mihai P.所述,{registerJs}
是Smarty模板的语法。所以,问题是:在Twig模板中注册内联JS有类似的方法吗?该文档仅提及注册资产。
答案 0 :(得分:1)
您可以在Twig模板中使用this
(即当前视图)来呼叫registerJs
。
{% set script %}
var app = new Vue({
el: '#vue-widget',
data: {
message: 'Hello Vue!'
}
})
{% endset %}
{{ this.registerJs(script,4,'vue-widget') }}
答案 1 :(得分:0)
您的示例是从智能部分复制而不是树枝。树枝部分中有一些您可能想尝试的例子。
答案 2 :(得分:0)
问题是3岁,我把它放在这里是给遇到类似问题的人。
您可以在Twig模板中将this
与View常量一起使用,如下所示:
{{ this.registerJs('$("span.show").replaceWith(\'<div class="show">\');', constant('\\yii\\web\\View::POS_HEAD')) }}
而且,您还可以在Yii2控制器内调用registerJs,我认为这可以使代码更简洁
$this->getView()->registerJs('$("span.show").replaceWith(\'<div class="show">\');', \yii\web\View::POS_HEAD);