2

我正在尝试在我的 Marionette 应用程序中渲染 jqGrid,一切都很好,直到我找不到渲染寻呼机的方法。我正在使用包含模板的把手,这是代码:

hb template:
    <script id='llantas_grid_tmpl' type='text/x-handlebars-template'>
        <table id='llantas_catalog_list'></table>
        <div id="llantas_catalog_pager">pager</div>
    </script>


layout...


    ui: {
            table: '#llantas_catalog_list',
            pager: '#llantas_catalog_pager'
        },

    onRender: function(){
            var table           = this.ui.table,
                pager           = this.ui.pager;          

            table

                .jqGrid({
                    url: '/llantas',
                    datatype: "json",
                    colNames:['Id','Orden De Compra', 'Marca', 'Medida', 'Modelo'],
                    colModel:[
                        {name:'id',index:'id', width:55},
                        {name:'ordencompra',index:'ordencompra', width:90},
                        {name:'marca',index:'marca', width:90},
                        {name:'medida',index:'medida', width:90},
                        {name:'modelo',index:'modelo', width:90}
                    ],
                    rowNum:10,
                    rowList:[10,20,30],
                    pager: '#llantas_catalog_pager',
                    width:1060,
                    height:375,
                    sortname: 'id',
                    viewrecords: true,
                    sortorder: "desc",
                    caption:"<h3>Catalogo llantas<h3>"
                });

            table
                .jqGrid('navGrid','#llantas_catalog_pager',{edit:false,add:false,del:false});    

        }

有没有办法将寻呼机占位符设置为 jqGrid 对象?像这样:

table
.jqGrid('navGrid',pager,{edit:false,add:false,del:false});    

编辑:请仅在您了解 BACKBONE MARIONETTE 和 JQGRID 的情况下回答。

4

2 回答 2

2

一句话,不。

jqGrid 进行检查以确保它是一个字符串,

if(!$t.grid || typeof elem !== 'string') {return;}

您需要修改 jqGrid 源。

于 2013-06-27T16:09:24.060 回答
0

我找到了让它工作的方法:

一旦子视图(我试图用 jqGrid 渲染的那个)被渲染并显示在主视图的区域中,我只需搜索模板表选择器并在 jqGrid 寻呼机选项中传递寻呼机 ID。

主要布局...

onRender: function(){

        // llantasGridView is the view holding only the template without the jqGrid (I erased everything)    
        var llantasGridView = new LlantasGrid.View();

        // table_container is the region that will hold the llantasGridView template
        this.table_container.show( llantasGridView );

        // once is rendered I search for the table
        var table = llantasGridView.$el.find('#llantas_catalog_list');

        // here I pass the jqGrid 
        table
            .jqGrid({
                url: G.API + '/llantas',
                datatype: "json",
                colNames:['Id','PO'...

                pager: '#llantas_catalog_pager', // pager for grid is now being displayed
...
于 2013-06-27T16:13:23.313 回答