你什么时候使用jqGrid no_legacy_api = false?

时间:2014-09-03 07:33:34

标签: jquery jqgrid

我已阅读this post有关您将jqGrid的no_legacy_api属性设置为true的原因。我有点得到答案。所以现在我的问题是你何时以及为什么要将该属性设置(或保留)为false?

我看了一下代码。由于我对jQuery扩展javascript对象的功能知识有限,在我看来,如果no_legacy_api为false,jqGrid的extend()将扩展jqGrid和jQuery。那是对的吗?如果是这样,你为什么要这样做?

1 个答案:

答案 0 :(得分:1)

您可以找到两个使用jqGrid methods的示例:

  1. $("#grid_id").jqGridMethodName(parameter1, ..., parameterN);
  2. $("#grid_id").jqGrid("jqGridMethodName", parameter1, ..., parameterN);
  3. jqGrid是jQuery插件。所以它扩展了jQuery对象上存在的方法列表(比如对象$("#grid_id"))。如果您在一个页面上使用多个插件,则可能存在此问题。如果两个插件使用相同的名称(例如getIndclearBeforeUnload),则会出现名称冲突,最后插入的Javascrpt插件将覆盖前一个插件的某些方法。

    设置选项

    $.jgrid.no_legacy_api = true;
    

    允许您更改jquery.jqGrid.min.jsjquery.jqGrid.src.js)的行为,以便将jQuery扩展的数量减少到最小。 jqGrid首先注册方法$.jgrid.extend(参见here),稍后用它来注册大多数jqGrid方法(例如,参见here)。

    no_legacy_api的正确用法如下

    <script type="text/javascript" 
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" 
        src="http://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/i18n/grid.locale-en.js"></script>
    <script type="text/javascript">
        $.jgrid.no_legacy_api = true;
        $.jgrid.useJSON = true;
    </script>
    <script type="text/javascript"
        src="http://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"></script>
    

    因此,您先包含jquery,然后将$.jgrid.no_legacy_api设置为true,最后您加入jquery.jqGrid.min.js。稍后在您的代码中,您可以使用var selRow = $("#list").jqGrid("getGridParam", "selrow");之类的结构,但不能再使用var selRow = $("#list").getGridParam("selrow");