2013-05-27 2 views
0

У меня есть этот скрипт в одном из моих контроллеров:Angularjs и 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']; 

Я использую FileWatcher в JetBrains PhpStorm для закрытия, он в основном работает следующим об изменении кода.

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']; 

Скрипт работает отлично, не уменьшенная, но я в недоумении, почему он вырвет эти ошибки парсер? Есть идеи?

ответ

4

В emcascript3 (более старый javascript) ключевые слова, такие как delete, не могут использоваться как имена свойств, если они не указаны. Просто используйте параметр компилятора --language_in, чтобы установить язык либо ECMASCRIPT5, либо ECMASCRIPT5_STRICT. Другим обходным путем является указание свойства, но оно имеет переименование последствий.

+0

большое спасибо за вашу помощь. –

Смежные вопросы