覆盖Yii网格视图中的私有JS方法
Override a private JS method in Yii Grid View
我想在yii'framework'zii'widgets'assets'gridview'jquery.yiigridview.js
处扩展YiiGridView
插件中的一个函数,以便将数据添加到插件进行的ajax调用中。
插件文件的完整来源可以在以下位置查看:https://code.google.com/p/yii/source/browse/trunk/framework/zii/widgets/assets/gridview/jquery.yiigridview.js
以下是我遇到的解决方案:
解决方案
-
目前,我正在使用ScriptMap,如下所示:http://www.yiiframework.com/forum/index.php/topic/31530-override-jqueryyiigridviewjs/
-
我也可以选择使用ajaxSend全局事件将我自己的数据添加到发送的每个请求中:http://api.jquery.com/ajaxSend/
-
指示可以通过重写
$.fn.yiiGridView.update
函数来实现这种功能的其他方法不适用,因为从Yii 1.1.9
起,这种方法已被弃用。
问题
我想要实现的是改变:
$.ajax(options);
至:
options = $.extend({}, options, {data: myCustomData});
$.ajax(options);
而不必求助于方法1、2或3。如果这不可能,我想确认一下。
插件文件中的第270行位于:https://code.google.com/p/yii/source/browse/trunk/framework/zii/widgets/assets/gridview/jquery.yiigridview.js#270
IMHO,可接受的选项为1或3
1:
+使用核心功能
+只有一个脚本请求
-你可以打碎一些东西
3:
+安全(没有损坏任何东西)
-附加请求
-需要在每个文件中连接
我会选择选项1
在此处添加此内容仅供将来参考。
从这个问题中可以明显看出,我试图覆盖ajax调用中的data
参数。
我需要这样做来将我的自定义数据(在本例中是过滤器)附加到data
对象。
有更好的方法来实现这一点。与其试图侵入代码并更改数据对象,不如使用网格配置选项'filterSelector' => 'input[name^=filter]',
来选择自定义过滤器。
生成的配置数组将是:
$this->widget('bootstrap.widgets.TbGridView', array(
'type' => 'striped',
'id' => 'grid-id',
'selectableRows' => 0,
'dataProvider' => $model->search(),
'template' => "{items}'n{pager}",
'filterSelector' => 'input[name^=filter]'
));
filterSelector
选项会自动将匹配字段中的任何数据附加到每个ajax调用,从而无需重写。
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- JS方法显示了未定义的简单示例
- 如何从方法内部获取js方法名称
- 如何在Spotify应用程序中创建discincts JS方法
- 正在寻找特定的JS方法来确认单选按钮的选择
- jquery在上下文中调用JS方法
- js方法链尾
- JS方法绑定与2个不同的这个
- Wy js 方法 toFixed() 返回 NaN
- 从链接调用 js 方法
- 正确的方法是什么,使用THREE.js方法来计算相机的偏航
- 为什么 findRandom() mongoose for node.js 方法不起作用
- Node.js 方法不返回任何响应,挂起请求
- 缺点和替代方案 - JS方法链接
- Rhino API-使用org.mozilla.javascript.Context访问js方法
- jQuery/JS方法链接
- 通过ajax调用从js方法返回值到REST服务
- 在JS方法asp.net C#中获取变量的内容
- 从复杂对象中提取选定数组和属性的JS方法/lib
- UIWebView elementFromPoint js方法return'错误'要素