Angularjs和Closure编译器

时间:2013-05-27 22:40:54

标签: angularjs google-closure-compiler

我在我的一个控制器中有这个脚本:

function AdIssueListCtrl($scope, $http, $rootScope, $compile) {
    $rootScope.nav = {
        adsSideNav: true
    };
    //datasource for kendoui interface
    $scope.kendo_adissues = new kendo.data.DataSource({
        pageSize: 10,
        serverPaging: true,
        serverFiltering: true,
        serverSorting: true,
        transport: {
            read: {
                url: "/ads/adissue/kendo/?template=ads/ajax/json/list_adissue_kendo.html",
                dataType: "json"
            }
        },
        schema: {
            total: "count",
            data: 'fields'
        },
        sort: {'field': 'name', dir: 'asc'}
    });
    //delete
    $scope.delete = function (id) {
        var deleteuser = confirm("Are you sure you wish to delete this issue and all it's ads?");
        if (deleteuser) {
            $http.get("/ads/adissue/delete/" + id + "/").success(function (data) {
                if (data.result == 'success') {
                    $scope.kendo_adissues.read();
                }
            });
        }
    };

    //bind data
    $scope.cdb = function (e) {
        var grid = $("#adissues_grid");
        $compile(grid.contents())($scope);
    };
}
AdIssueListCtrl.$inject = ['$scope', '$compile', '$rootScope', '$http'];

我在jetbrains PHPStorm中使用filewatcher进行关闭,它基本上在代码更改时运行以下内容。

compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js $FileName$

其中$ FileName $是当前打开的文件。出于某种原因,我遇到了以下错误。

ERROR - Parse error. missing name after . operator
    $scope.delete = function (id) {
           ^

controllers.js:47: ERROR - Parse error. syntax error
}
^

controllers.js:48: ERROR - Parse error. syntax error
AdIssueListCtrl.$inject = ['$scope', '$compile', '$rootScope', '$http'];

该脚本工作正常,但我不知道为什么它会抛出那些解析器错误?有什么想法吗?

1 个答案:

答案 0 :(得分:4)

在emcascript3(较旧的javascript)中,除非引用,否则不能将删除等关键字用作属性名称。只需使用编译器的--language_in选项将语言设置为ECMASCRIPT5ECMASCRIPT5_STRICT。另一种解决方法是引用属性,但这有重命名的含义。