Пользовательская функция редактора HandsOnTable - PullRequest
0 голосов
/ 30 августа 2018

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

Проблема в том, что я не могу найти способ, чтобы мои теги <a ng-click='doSomething()'> или <a onclick = 'doSomething()'> нашли мою функцию "doSomething".

Я пробовал расширенный прототип экземпляра автозаполнения, но моя функция на контроллере оказалась безрезультатной. Можно ли как-нибудь вставить делегатскую функцию в этот редактор, которая может быть запущена из моего собственного шаблона? (С использованием angularjs, HOT версия 0.34)

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Спасибо, я действительно нуждался в действиях, специфичных для каждой области, на которую нажимали. Что я сделал, чтобы это работало, так это: вставляя элементы для списка, я создал элемент и сразу связал его с функцией: l iElement = document.createElement('li') .... liElement.onclick = doSomething(){} .... сделал так, чтобы это работало ..

0 голосов
/ 31 августа 2018

Параметры раскрывающегося списка не могут интерпретировать HTML вместо заголовков.

Чтобы выполнить действие при выборе опции, вы можете использовать Handsontable callback: AfterChange или BeforeChange Здесь вы можете найти все горячие обратные вызовы https://docs.handsontable.com/0.34.0/tutorial-using-callbacks.html

Этот JSFiddle может помочь вам http://jsfiddle.net/fsvakoLa/

beforeChange: function(source, changes){
    console.log(source, changes)
},
 afterChange: function(source, changes){
    console.log(source, changes);
  if(!source) return;
   if(source[0][1] == 0){//if ocurs on col 0
        let newsource = optionsWBS[source[0][3]];
        cols[1] = {
                                type : 'dropdown',
                            source: newsource,
                        strict: false
                            };
      hot.updateSettings({columns: cols});
      hot.render();
  };
}
...