Angularjs 从ES6到ES5的转换抛出语法错误

Angularjs 从ES6到ES5的转换抛出语法错误,angularjs,ecmascript-6,ecmascript-5,Angularjs,Ecmascript 6,Ecmascript 5,我正在尝试将指令从ES6转换为ES5。这给了我一些语法上的错误,比如范围声明“需要换行符或分号”,链接:函数声明“函数语句应该在程序的顶层”。是否有人可以帮助将此ES6指令更改为ES5 ES6中的指令 directives.directive('clickAndWait', () => ({ restrict: 'A', scope: { asyncAction: '&clickAndWait', },

我正在尝试将指令从ES6转换为ES5。这给了我一些语法上的错误,比如范围声明“需要换行符或分号”,链接:函数声明“函数语句应该在程序的顶层”。是否有人可以帮助将此ES6指令更改为ES5

ES6中的指令

directives.directive('clickAndWait', () => ({
        restrict: 'A',
        scope: {
            asyncAction: '&clickAndWait',
        },
        link: (scope, element) => {
        element.bind('click', () => {

        element.prop('disabled', true);
    // element.addClass('state-waiting');
    scope.$apply(() => {
        scope.asyncAction().finally(() => {
        element.prop('disabled', false);
    // element.removeClass('state-waiting');
});
});
});
},
}));
我的ES5代码

        directives.directive('clickAndWait', function () {
       return {
           restrict : 'A',
           scope : {
               asyncAction: '&clickAndWait'
           },
           link : function(scope, element, attr) {
               element.bind('click', function(){
                   element.prop('disabled', true);
                   scope.$apply(function () {
                       scope.asyncAction().finally(function () {
                           element.prop('disabled', false);
                       })
                   })
               });
           }
       }

    });
主要是将
()=>{
重命名为
函数(){
。但也要确保将return语句添加到指令函数中,这在arrow函数中是隐式的

directives.directive('clickAndWait', function() {
    var directiveConfig = {

        restrict: 'A',
        scope: {
            asyncAction: '&clickAndWait',
        },
        link: function(scope, element) {
            element.bind('click', function() {

                element.prop('disabled', true);
                scope.$apply(function() {
                    scope.asyncAction().finally(function() {
                        element.prop('disabled', false);
                    });
                });
            });
        }
    };

    return directiveConfig;
});

function(){foo:bar,baz:abc,…}
没有多大意义。如果要创建对象,则必须执行
function(){return{foo:…,bar:,…}
。您可以了解有关上的对象的更多信息。我只是尝试从es6转换为es5。您能告诉我在es5中转换指令的正确方法吗?我做了,但这里又是:
()=>({})
变成
函数(){return{};}
。箭头函数返回一个对象,因此您的函数表达式也必须返回一个对象。请不要误会,但您不知道
()=>({})的含义吗
是吗?如果我问的是业余问题,我很抱歉。但我不知道这是怎么回事。我以前从未见过任何ES6语法。这可能会有所帮助:。