在链接中实现函数或将$ scope传递给外部链接

时间:2017-03-15 08:22:27

标签: javascript angularjs angularjs-directive angularjs-scope

我的问题是什么是最佳做法+效率更高? 在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*/
                }
        }]);

1 个答案:

答案 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
            }
        }]);

它没有必要你传递匿名函数总是你可以传递任何函数引用,并且当该函数被调用时它将被赋予三个参数,因此你可以直接在你的函数中获得该参数,无需创建额外的层范围和功能。