名称为字符串的函数的调用方法

时间:2018-07-28 05:45:54

标签: angularjs angularjs-directive

我有这个:

    angular.module("angular-table").directive("atPagination", [
    function() {
      return {
        restrict: "E",
        scope: false,
        replace: true,
        template: paginationTemplate,
        link: function($scope, $element, $attributes) {

          //The function name
          let fn = '$scope.' +  $attributes.getDataFn;
          console.log($scope.$eval(fn),$attributes,$attributes.getDataFn, "$eval", fn); 
        }
    }
}

我正在控制台中(最后一行)使用$scope.$eval调用该函数。但是该函数没有被调用。

我正在尝试更改此用于表和分页的库。我试图将一个函数从我的控制器传递到它的指令,以便在分页中单击next时调用它。

我无法以常规方式传递该函数,因为scope为假,并且我不想更改它。所以我这样通过了

 <at-pagination at-config="tableConfig" 
     get-data-fn="getPaginatedData()" at-list="personnelsdata">
 </at-pagination>

我正在尝试使用$eval调用该函数,但是它不起作用。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

app.directive("myDirective", function() {
  return {
    restrict: "E",
    scope: false,
    template: paginationTemplate,
    link: function(scope, element, attrs) {

      //The function name
      ̶l̶e̶t̶ ̶f̶n̶ ̶=̶ ̶'̶$̶s̶c̶o̶p̶e̶.̶'̶ ̶+̶ ̶ ̶$̶a̶t̶t̶r̶i̶b̶u̶t̶e̶s̶.̶g̶e̶t̶D̶a̶t̶a̶F̶n̶;̶
      let fn = attrs.getDataFn;
      console.log(scope.$eval(fn)); 
    }
})

scope.$eval方法将评估AngularJS函数,而不是JavaScript函数。

有关更多信息,请参见