我有这个:
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
调用该函数,但是它不起作用。我在做什么错了?
答案 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函数。
有关更多信息,请参见