如何使用Marionette实现jqGrid?

时间:2013-06-24 15:05:39

标签: backbone.js jqgrid marionette

我正在尝试在我的Marionette应用程序中渲染jqGrid,一切顺利,直到我找不到渲染寻呼机的方式。 我使用的是持有模板的Handlebars,这是代码:

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});    

编辑:如果你知道后弹MARIONETTE和JQGRID,请回答。

2 个答案:

答案 0 :(得分:2)

总之,没有。

jqGrid does a check以确保它是一个字符串,

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

您需要修改jqGrid源。

答案 1 :(得分:0)

我找到了让它发挥作用的方法:

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

主要布局......

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
...