怡安;Backbone.js-renderPartial多次注册相同的脚本

怡安;Backbone.js-renderPartial多次注册相同的脚本,backbone.js,yii,Backbone.js,Yii,我使用主干路由器对Yii操作进行ajax调用,从而加载部分视图 this->renderPartial('_foo',null,false,true); 但问题发生在我多次使用同一个ajax调用时,它一次又一次地从部分视图加载所有脚本,这反过来又破坏了应用程序 有没有办法用相同的动作调用模式来解决这个问题?或者,如果没有,我应该如何使Yii和主干网协作?Yii小部件在处理需要加载额外脚本的元素的ajax调用时设计得非常糟糕 bool.dev在评论中发布的解决方案是我处理此问题的首选方法,

我使用主干路由器对Yii操作进行ajax调用,从而加载部分视图

this->renderPartial('_foo',null,false,true);
但问题发生在我多次使用同一个ajax调用时,它一次又一次地从部分视图加载所有脚本,这反过来又破坏了应用程序


有没有办法用相同的动作调用模式来解决这个问题?或者,如果没有,我应该如何使Yii和主干网协作?

Yii小部件在处理需要加载额外脚本的元素的ajax调用时设计得非常糟糕

bool.dev在评论中发布的解决方案是我处理此问题的首选方法,但如果出于任何原因(对您来说似乎是这样),也有其他方法不起作用

在主视图文件(使用render()而不是partialRender()调用的文件)中,包括以下内容:

$this->renderPartial('u foo',null,true,true)

这将强制您的主页面调用(因此,在ajax调用之前)包含脚本。由于第三个参数现在为true,它将以字符串的形式返回内容,然后由于我们没有将其存储在任何地方而将其丢弃

然后对于ajax调用,使用

$this->renderPartial('u foo',null,false,false)

或者只是

$this->renderPartial(“ufoo”)

因为最后3个参数只是默认值

这将防止脚本被多次加载,但仍然存在,因为它们位于原始页面加载中,而不是ajax调用中

根据
\u foo
查看文件中的内容,您可能需要制作一个特殊文件。所需的只是虚拟使用您希望脚本文件来自的小部件


请记住,您所要做的就是强制小部件在主页调用上运行,以便它注册其脚本,然后放弃剩余的输出。然后在ajax调用中,通过将processOutput参数设置为false来忽略它注册的所有脚本。

是否需要processOutput(renderPartial的第四个参数)为true?如果为false,则它将忽略registerScript all,这意味着您需要一些脚本,但不需要所有脚本?你能显示列表吗?看一看,这基本上是个问题,但我想停止yii小部件中的脚本,因为它们的编号格式类似于so assets/68368b44/jquery.js/eval/seq/9,在加载后,它们似乎会与jquery.js dir一起被删除