Как сделать так, чтобы пользовательская директива запускалась в angularjs 1.x? - PullRequest
0 голосов
/ 28 августа 2018

Как сделать так, чтобы директива запускала функцию, аналогичную другим встроенным директивам в angular?

Например:

<div ng-repeat="someId in myList" my-directive="runFunctionInScope(someId, divHtmlElement)" />


myApp.directive('myDirective', function ()
{
    return function (scope, element, attrs)
    {
        //??
    }
}

1 Ответ

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

Вы можете попробовать что-то вроде приведенного ниже фрагмента кода. Также, пожалуйста, проверьте этот поршень для рабочего примера вашего данного сценария.

Шаблон:

<div ng-repeat="someId in myList" my-method='theMethodToBeCalled' my-id='someId.id' />

Контроллер:

app.controller('MainCtrl', function($scope) {
  $scope.myList=[{ 
      id: 1,
      value: 'One'
    }, { 
      id: 2,
      value: 'Two'
    }];
  $scope.theMethodToBeCalled = function(id) { 
    alert(id); 
  };
});

Директива:

app.directive("myMethod",function($parse) {
    var directiveDefinitionObject = {
      restrict: 'A',
      scope: { 
        method:'&myMethod',
        id: '=myId'
      },
      link: function(scope,element,attrs) {
        var expressionHandler = scope.method();
        expressionHandler(scope.id);
      }
    };
    return directiveDefinitionObject;
});
...