2012-11-15 58 views
1

我正在使用jqgrid,並有太多的選項。 我想要做的是設置一個預定義的選項,並在以後使用它。jquery合併預定義選項

//my predefined options 
var edit_options = { 
editrules: 
{ 
    required:true 
    ,edithidden:true 
    ,editable:true 
} 

,然後執行時

jGrid.jqGrid({ 
... 
colNames:['id','Code', 'Name'], 
    colModel:[ 
    //id 
    {name:'sample_id' 
     ,index:'sample_id' 
    }, 
    //Code 
    {name:'sample_code' 
     ,index:'sample_code' 
     ,edit_options 
    }, 
    //Name 
    {name:'sample_name' 
     ,index:'sample_name' 
     ,edit_options 
    } 

當然 'edit_options' 在這裏給錯誤。如何正確地做到這一點? 我只想第二個和第三個選項使用預定義的選項。 我正在尋找$ .extend(),但無法正確計算出來。

回答

0

您可以使用jQuery的extend - 方法:

jGrid.jqGrid({ 
... 
colNames:['id','Code', 'Name'], 
    colModel:[ 
     $.extend(true, 
      { 
      name:'sample_code', 
      index:'sample_code' 
      }, 
      editOptions 
     ), 
     $.extend(true, setupCode, editOptions), 
     $.extend(true, setupCode, editOptions) 
    ] 
}); 

該方法採用對象的任意號碼,依次複製每個對象的屬性到的第一個對象。請注意,如果同一個密鑰存在多次,則當前值將被新值覆蓋。

+0

OMG,就像魅力一樣。非常感謝! –

+0

不客氣,很高興我能提供幫助 – PatrikAkerstrand

0

存在一些語法錯誤。首先,在edit_options的末尾丟失了}

{name:'sample_id' 
    ,index:'sample_id' 
    ,edit_options 
}, 

這段代碼是錯誤的,你必須給第三個成員命名。你必須這樣做:

{name:'sample_id' 
    ,index:'sample_id' 
    , options : edit_options // Replace 'options' by the good name 
},