我发现了更多关于这个问题的帖子,但所有的答案都无济于事。例如,在Yii和Yii CClientScript文档中,从registerScript方法强制执行脚本顺序。上面的帖子写了
registerScript(string $id, string $script, integer $position=NULL, array $htmlOptions=array ( ))
为了获得以上脚本:
<script type="text/javascript" id="some_id">
console.log("sasasasas");
//js code
</script>
我有一段代码:
$cs = Yii::app()->getClientScript();
$cs->registerScript(__CLASS__ . '#' . $this->id . 'Ex', '
console.log("sasasasas");'
//js code
, CClientScript::POS_READY, array('id="some_id"' )
);
但我没能像我预想的那样得到剧本。我得到了没有id="some_id"
的脚本。有人能帮我找到我遗漏的东西吗?
编辑
不适用于两个版本:
$cs = Yii::app()->getClientScript();
$cs->registerScript(__CLASS__ . '#' . $this->id . 'Ex', '
console.log("sasasasas");'
//js code
, CClientScript::POS_READY, array('id'=> 'some_id' )
);
和
$cs = Yii::app()->getClientScript();
$cs->registerScript('some_id', '
console.log("sasasasas");'
//js code
, )
);
我想你必须更改行
array('id="some_id"')
至
array('id' => 'some_id')
可能有人稍后会遇到这个问题。我建议他们,不要犯我的错误@Chris的回答是对的,当您使用render()
渲染视图时,registerScript()
会设置一个id,但当您使用renderPartial()
时,registerScript()
不会将id设置为脚本。您可以从后中找到解决方案