2016-09-14 60 views
-1
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 

    <script type="text/javascript"> 

     var moduleServiceUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/lists/getbytitle('Pages')/Items?$select=ID,Title,FileRef,Modules"; 
     var appVar = angular.module('listApp', []); 

     appVar.controller('controller1', function ($scope, $http) { 
      $http({ 
       method: 'GET', 
       url: moduleServiceUrl, 
       headers: { "Accept": "application/json;odata=verbose" } 
      }).success(function (data, status, headers, config) { 
       $scope.items = data.d.results; 
       $scope.modules = data.d.results.reduce((modules, item) => { 
        if (item.Modules) { 
         if (Array.isArray(modules[item.Modules])) { 
          modules[item.Modules].push(item); 
         } else { 
          modules[item.Modules] = [item]; 
         } 
        } 
        return modules; 
       }, Object.create(null)); 

      }); 
     }) 
    </script> 

</head> 
<body> 
    <hr /> 
    <div ng-app="listApp"> 
     <div id="App1" ng-controller="controller1"> 
      <div ng-repeat="(module, items) in modules"> 
       <p><strong>{{module}}</strong></p> 
       <p ng-repeat="item in items" style="padding-left:10px;"> 
        <a ng-href="{{item.FileRef}}">{{item.Title}}</a> 
       </p> 
      </div> 

     </div> 
    </div> 

</body> 
</html> 

IE is showing this error: [$injector:modulerr]角 - 應用程序在Chrome中工作,但不是IE

IE也說,「$範圍是不確定的」,雖然它是函數的參數。

此問題令人困惑,因爲代碼在Chrome中正常工作。

+0

這就是爲什麼我認爲客戶端的JavaScript框架是一個可怕的想法。瀏覽器地獄。 – duffymo

回答

0

當你做依賴注入時,你應該傳遞一個字符串數組來描述進入控制器函數的參數。對角

1.Best做法:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#data-services

appVar.controller('controller1', controller1); 
controller1.$inject = ['$scope', '$http']; 
function controller1($scope, $http) { 
    // controller code 
} 

2.Default角模式:https://docs.angularjs.org/guide/controller

appVar.controller('controller1', ['$scope', '$http', function ($scope, $http) { 
    // controller code 
}]) 
0

您可以使用angularJS建議報告的內聯陣列註釋。

appVar.controller('controller1', ['$scope', '$http', function ($scope, $http) { 
     //Codes   
    }]) 
0

最有可能發生因reduce function使用Arrow notation這個錯誤。 IE不支持箭頭符號(ES6功能),更多詳細信息請參見Browser Compatibility table

,使其與IE兼容替代箭頭函數語法(=>)與回調函數的語法:

$scope.modules = data.d.results.reduce(function(modules, item){ 
    if (item.Modules) { 
      if (Array.isArray(modules[item.Modules])) { 
       modules[item.Modules].push(item); 
      } else { 
       modules[item.Modules] = [item]; 
      } 
    } 
    return modules; 
}, {}); 
相關問題