Ни один из предполагаемых высоко разрешенных решений не работал для меня правильно. Каждый из них приводит к ошибке, когда после открытия и закрытия (щелкнув по другим элементам) popover в первый раз, он не открывается снова, пока вы не сделаете два клика на триггерной ссылке вместо одного.
Поэтому я немного изменил его:
$(document).on('click', function (e) {
var
$popover,
$target = $(e.target);
//do nothing if there was a click on popover content
if ($target.hasClass('popover') || $target.closest('.popover').length) {
return;
}
$('[data-toggle="popover"]').each(function () {
$popover = $(this);
if (!$popover.is(e.target) &&
$popover.has(e.target).length === 0 &&
$('.popover').has(e.target).length === 0)
{
$popover.popover('hide');
} else {
//fixes issue described above
$popover.popover('toggle');
}
});
})
Какая причина для Matlab? Если вы работаете в академических кругах, у вас может быть доступ к LabVIEW, который может быть легче изучить для чего-то подобного. Вы захотите использовать ВП Read from Text File, а затем проанализировать строку. Конечно, вам придется использовать "|" символов для разделения данных (используйте Match Pattern VI). Со временем вы, возможно, захотите реструктурировать и способ хранения данных в текстовом файле — используйте текстовые клавиши, а не |. Что-то вроде:
кодсерв N области | codice 1 nome N01 tnom 20
и т.д...
Извините, что не предоставил ответ с каким-то исходным кодом Matlab, но я бы рассмотрел LabVIEW, если это вариант.
взгляните на textscan
у вас есть контроль над форматом текстового файла?
EDIT
вот довольно хакерский способ добиться результата
function readtest()
fid = fopen('test.txt');
%skip 3 lines, save 4th, skip 5th
for i = 1:4
names = fgetl(fid);
end
fgetl(fid);
% separate out names
names = textscan(names,'%s','delimiter','|');
% read the data
data = textscan(fid,'%s %s %d %s %s %d %d %f %f %f %[| ]','delimiter','|');
fclose(fid);
for i = 1:size(data,2)-1
values = ( data{i}(1:end));
if(iscell(values))
values = cell2mat(values);
end
name = names{1}{i+1};
% very basic error checking
if(~strcmp(name, ''))
%save the value in the calling work space
assignin('caller', name, values)
end
end