2016-08-04 3 views
0

Я знаю, что есть много других вопросов, относящихся к этому вопросу, но я не нашел тот, который хорошо согласуется с моим. Я работаю с angularjs, express, html и jquery. У меня есть структура данных, которая запрашивает папку для подкаталогов, а затем имеет возможность отображать данные в выбранном подкаталоге. Номенклатура подкаталога - это идентификатор клиента, а данные в подкаталоге - это документы. На странице, на которой включен datatable, я отправил параметр в таком формате: domain/client/:id. На угловой стороне я смог зафиксировать этот параметр и фильтровать другие результаты. Но я не уверен, как это сделать в моем Datatable. Я знаю, как фильтровать результаты отображения в datatable, это не проблема. Проблема заключается в захвате этого параметра, а затем передаче его в мою функцию фильтра. Вот код для моего DataTable:DataTables - данные таблицы фильтров по параметру, указанному по URL

$(document).ready(function() { 
    var table = $(".linksholder").dataTable({ 
     "fnCreatedRow": function(nRow, aData, iDataIndex) { 
      if (!aData.IsDirectory) return; 
      var path = aData.Path; 
      $(nRow).bind("click", function(e) { 
       $.get('/files?path=' + path).then(function(data) { 
        table.fnClearTable(); 
        table.fnAddData(data); 
        currentPath = path; 
       }); 
       e.preventDefault(); 
      }); 
     }, 
     "aoColumns": [{ 
      "sTitle": "", 
      "mData": null, 
      "bSortable": false, 
      "sClass": "head0", 
      "sWidth": "55px", 
      "render": function(data, type, row, meta) { 
       if (data.IsDirectory) { 
        return "<a href='#' target='_blank'><i class='fa fa-folder'></i>&nbsp;" + data.Name + "</a>"; 
       } else { 
        return "<a href='/assets/" + data.Path + "' target='_blank'><i class='fa " + "'></i>&nbsp;" + data.Name + "</a>"; 
       } 
      } 
     }], 
    }); 
    $.get('/files').then(function(data) { 
     table.fnClearTable(); 
     table.fnAddData(data); 
    }); 
    $(".up").bind("click", function(e) { 
     if (!currentPath) return; 
     var idx = currentPath.lastIndexOf("/"); 
     var path = currentPath.substr(0, idx); 
     $.get('/files?path=' + path).then(function(data) { 
      table.fnClearTable(); 
      table.fnAddData(data); 
      currentPath = path; 
     }); 
    }); 
}); 
+0

Вы должны сделать это директивой, и тогда вы сможете передать свой параметр ему через 'scope' и атрибут директивы. Здесь есть много сообщений об использовании jQuery с директивой в Angular. – Lex

ответ

0

Вот решение:

Я добавил эти переменные:

var url = window.location.href; 
var id = document.location.href.split('client/')[1]; 

Затем назвал конкретный подкаталог, как это:

$.get('/files?path=' + id).then(function(data) { 
      table.fnClearTable(); 
      table.fnAddData(data); 

     }); 
Смежные вопросы