簡體   English   中英

在Angular JS 1.2.x中而不是在1.3.x中工作的2D數組

[英]2D arrays working in Angular JS 1.2.x and not in 1.3.x

我想在Angular中為2D數組編寫一個簡單的循環,如下所示:

<!DOCTYPE html>
<html ng-app="">
  <head>
    <meta charset="ISO-8859-1">
    <title>Angular 2D Demo</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
    <script type="text/javascript">
      var TableCtrl = function($scope) {
        $scope.data = [
          ["val-11", "val-12", "val-13"],
          ["val-21", "val-22", "val-23"]
        ];
      }
    </script>
  </head>
  <body>
    <table ng-controller="TableCtrl">
      <tr ng-repeat="row in data">
        <td ng-repeat="col in row">{{col}}</td>
      </tr>
    </table>
  </body>
</html>

此代碼可以正常工作。

但是,如果使用的angular的版本更改為1.3.x,則在瀏覽器調試控制台上會出現以下錯誤:

Error: [ng:areq] http://errors.angularjs.org/1.3.14/ng/areq?p0=TableCtrl&p1=not%20a%20function%2C%20got%20undefined
    at Error (native)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:6:417
    at Sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:19:510)
    at tb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:20:78)
    at $get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:75:331)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:57:65
    at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:7:408)
    at A (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:56:443)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:299)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js:51:316)

我是否需要更改數據聲明的語法,還是需要更改其他內容?

不是2D陣列不起作用-這是全局控制器功能。 在1.3中不允許(默認情況下)。 您需要顯式注冊一個.controller

var app = angular.module("myApp", []);

app.controller("TableCtrl", function TableCtrl($scope){
  // whatever you currently have
});

您還需要明確聲明應用名稱:

<html ng-app="myApp">
   ...
</html>

(此外,如果您使用非最小化的Angular,它將為您提供更多描述性的錯誤消息。)

如@NewDev建議,在模塊上定義控制器。

要么

在配置階段在$controllerProvider上執行allowGlobals

角度變更日志

angular.module('myModule').config(['$controllerProvider', function($controllerProvider) {
  // this option might be handy for migrating old apps, but please don't use it
  // in new ones!
  $controllerProvider.allowGlobals();
}]);

錯誤與未定義的控制器有關。 由於使用的是angular 1.3,因此需要使用.controller()來聲明控制器。

var TableCtrl = function($scope) {
        $scope.data = [
          ["val-11", "val-12", "val-13"],
          ["val-21", "val-22", "val-23"]
        ];
      }

angular.module("app",[])
.controller("TableCtrl",function($scope) {
        $scope.data = [
          ["val-11", "val-12", "val-13"],
          ["val-21", "val-22", "val-23"]
        ];
      })

在html中:

 <html ng-app="app">..........</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM