Есть ли ляпы в коде?
Комментарии в коде бесполезные, только глаза мозолят:index: function (settings) {
    // Метод контроллера index
....
create: function (settings) {
    // Метод контроллера create
....
Если уж вы описываете свой код - делайте это с умом, посмотрите какие есть средства для генерации документации, например JSDoc
Используйте фигурные скобки и отступы везде, где только можно. Я, разумеется, понимаю, что "стильно модно молодежно" писать if в одну строку, но такого рода конструкции взрывают мозг:....
else data = settings;
if (typeof data !== "string") data = $.param(data);
if (method == 'post') return $.post(url, data + '&_method=' + method_hidden);
else return $.get(url, data);
....
И, если еще придираться, - пустые строки после объявления переменных, после if/else, и.т.д. улучшают читабельность.
Не используйте ключевые слова из es6 где попало:class: '.jsgrid-container',
Есть некоторая непоследовательность - иногда вы выносите объявления всех переменных в начало функции, иногда нет. Имеет смысл определиться и использовать что-то одно. 
Да, и киньте ссылку на codepen что-ли, а то в 500 строк кода ни разу не понятно работает ли там что-то (и что оно вообще делает). И к этому хочется добавить - посмотрите в сторону систем сборки (Grunt/Gulp/...)на ваш вкус - скорее всего эти 500 строк можно разбить на части поменьше, станет проще ориентироваться в происходящем.
Одна логическая ошибка в коде точно есть. Объясню ее на примере.function setHandler(el){

   var obj = new MyController(el);

  $(el).on("click", function hand(){
      alert(obj.name);
  });

}

setHandler(element1);
setHandler(element2);
После выполнения данного кода в память браузера попадают:Функция setHandlerДва объекта типа MyControllerДве функции hand - обработчики события onclick. 
Да-да, для каждого вызова setHandler создается своя функция hand. Две (три, десять или даже миллион) разные функции с одинаковым телом. Все, что их отличает - область видимости, в которой они объявлены (к примеру, внутри каждой из них доступен свой obj).
Но, спрашивается, как мы можем оптимизировать потребление памяти в данной ситуации? А вот так:function hand(){

  var obj = $(this).data("obj");

  alert(obj.name);

}

function setHandler(el){

   var obj = new MyController(el);

  $(el)
    .data("obj", obj) //Как вариант
    .on("click", hand)
  ;

}

setHandler(element1);
setHandler(element2);
Вынесем hand в более высокую область видимости.
Теперь в памяти сохранены:Функция setHandlerФункция handДва объекта MyController