我的问题是什么是最佳做法+效率更高? 在Link函数中实现使用$ scope的函数,或者在外部实现它并将$ scope传递给它?
angular.module('exampleModule', [])
.directive('exampleDirective', ['$http',
function ($http) {
return {
restrict: 'EA',
scope: {
...
},
link: function ($scope, element, attr) {
/* Implement here? */
function myFunc(){
/* do some calc using $scope*/
}
},
templateUrl: "..."
}
/**
* Assistant Functions
*/
/* Implement here? */
function myFunc($scope){
/* do some calc using $scope*/
}
}]);
答案 0 :(得分:0)
你可以在底部定义函数,只需给出对该函数的引用,该函数将接收所有参数。 对于前。
angular.module('exampleModule', [])
.directive('exampleDirective', ['$http',
function ($http) {
return {
restrict: 'EA',
scope: {
...
},
link: myFunc, // just the reference to the function to be invoked
templateUrl: "..."
}
//link function
function myFunc($scope, element, attr){
/* do some calc using $scope*/
$scope.someResult = calculateSomeResult($scope.someArg);
// use the sub function to perform calculation and give only required thing as argument, don't pass entire $scope
}
function calculateSomeResult(someArg) {
return someArg * 2; //here perform any calculation or anything. and return the result
}
}]);
它没有必要你传递匿名函数总是你可以传递任何函数引用,并且当该函数被调用时它将被赋予三个参数,因此你可以直接在你的函数中获得该参数,无需创建额外的层范围和功能。