1

我正在研究 angularJS,我的代码很好,但我被困在一个地方,我找不到为什么ng-class-even指令中需要额外的引号。

在这一行<tr ng-repeat="x in records" ng-class-even='"striped"'>中为什么 striped 是这样写"'striped'"而不是这样写的"striped"

.striped {
    color:white;
    background-color:black;
}
<body ng-app="myApp">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

<table ng-controller="myCtrl">
<tr ng-repeat="x in records" ng-class-even="'striped'">
  <td>{{x.Name}}</td>
  <td>{{x.Country}}</td>  
</tr>
</table>

<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
  $scope.records = [
    {
      "Name" : "Alfreds Futterkiste",
      "Country" : "Germany"
    },
    {
      "Name" : "Berglunds snabbköp",
      "Country" : "Sweden"
    },
    {
      "Name" : "Centro comercial Moctezuma",
      "Country" : "Mexico"
    },
    {
      "Name" : "Ernst Handel",
      "Country" : "Austria"
    }
  ]
});
</script>

</body>

4

3 回答 3

3

ng-class-even期望一个expression但您愿意分配一个硬编码的字符串,并且字符串被包装quotes为有效token,否则angular解析器将查找model-name名称为striped

于 2016-06-09T06:34:47.537 回答
1

这是因为ng-class-even允许给出一个表达式。在您的问题中,您说:

在这一行中为什么 striped 写成这样“'striped'”而不是这个“striped”

如果您尝试这样做,Angular 认为这striped是附加在$scope. 所以使用'striped'告诉 Angular 你传递给指令的表达式是一个字符串值

于 2016-06-09T06:36:46.180 回答
1

因为 ng-class-even 和 odd 都需要表达式并且你需要 String 所以你必须写 String 因为你需要硬编码的字符串 这里是 ng-class-even 的文档

https://docs.angularjs.org/api/ng/directive/ngClassEven

你可以在那里看到很好的例子

于 2016-06-09T06:58:17.630 回答