2012-04-13 3 views
0

Я знаю, что для этого есть, вероятно, очень малое и простое наследование или расширение, но я надеюсь, что этот вопрос окажется полезным не только для меня. И быстрее.Как избежать дублирования кода при настройке виджета, который я создаю, используя литералы JavaScript?

У меня есть, например, следующий код для настройки Kendo UI grid. Мне нужно повторить этот код точно для двух сеток на одном и том же представлении, за исключением одного разницы параметров в объекте transport.read.data. Я понимаю, что могу делить определения model и columns на общие объекты, но в итоге я хотел бы разделить всю конфигурацию сетки. Возможно, расширение jQuery под названием myUserKendoGrid?

$("#availableUsersGrid").kendoGrid({ 
     dataSource: { 
      transport: { 
       read: { 
        url: "/Role/AvailableUsersJson", 
        data: { roleId: $("#Id").val() }, 
        type: "GET" 
       } 
      }, 
      schema: { 
       model: { 
        id: "Id", 
        fields: { 
         Id: { editable: false }, 
         UserName: { editable: false }, 
         EmployeeRefNum: { editable: false }, 
         EmployeeSurname: { editable: false }, 
         EmployeeFullNames: { editable: false } 
        } 
       } 
      } 
     }, 
     columns: [ 
       { field: "UserName", title: "User Name" }, 
       { field: "EmployeeRefNum", title: "Emp. No." }, 
       { field: "EmployeeSurname", title: "Surname" }, 
       { field: "EmployeeFullNames", title: "Name" } 
     ], 
     selectable: "multiple, row", 
     editable: false, 
     sortable: true, 
     pageable: true 
    }); 

ответ

0

Вы можете просто клонировать конфигурацию через .extend() метод JQuery. Например:

var superDuperAwesomeConfiguration = { 
    // moar configs go here, yo! 
}; 

var copyCatConfigs = jQuery.extend(true, {}, superDuperAwesomeConfiguration); 

// modify copyCatConfigs properties here 

$("#gridA").kendoGrid(superDuperAwesomeConfiguration); 
$("#gridB").kendoGrid(copyCatConfigs); 
+0

Thanks John. Мои документы для jQuery дают мне подпись 'jQuery.extend ([deep], target, object1, [objectN]): Object' для глубокой протяженности, что я предполагаю, что вы намереваетесь, основываясь на первом параметре' true' , Конечно, 'superDuperAwesomeConfiguration' является целью и, следовательно, вторым параметром в этом случае? Оцените мой jQuery/пятничный stoopidz. – ProfK