Что такое правильный способ Angular для запуска handsontable loadData щелчком мыши

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

var gmApp = angular.module('gmApp', ['gmServices']);
gmApp.directive('myChart', function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs) {
            $(element).handsontable(scope.$eval(attrs.myChart));
        }
    };
}); 

Я также создал список, который запускает функцию showVariable().

 <ul>
      <li ng-repeat="variable in list" ng-click="showVariable(variable.id)">{{variable.name}}</li>
 </ul>

Эта функция запускает loadData в моем контроллере:

$scope.showVariable = function(id) {
     $('#myChart').handsontable('loadData', $scope.data[id]);
};

Но кажется, что это меняет DOM внутри контроллера, а не настоящий угловой способ. Каков правильный угловой способ выполнения handsontable('loadData')?


person V G    schedule 21.11.2013    source источник


Ответы (1)


Переместите showVariable в функцию link вашей директивы:

    link: function(scope, element, attrs) {
        $(element).handsontable(scope.$eval(attrs.myChart));

        scope.showVariable = function(id) {
           $('#myChart').handsontable('loadData', $scope.data[id]);
        };
    }
person musically_ut    schedule 21.11.2013