为什么ng-class-甚至需要额外的报价

时间:2016-06-09 06:31:27

标签: javascript angularjs angularjs-ng-class-even

我正在使用angularJS,我的代码很好,但是我被困在一个地方,我无法找到ng-class-even指令中需要额外引号的原因。

在这一行<tr ng-repeat="x in records" ng-class-even='"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>

3 个答案:

答案 0 :(得分:3)

  

ng-class-even需要一个expression,但您愿意分配一个硬编码字符串,并且quotes包含的字符串有效tokenangular解析器将查找名称为model-name

striped

答案 1 :(得分:1)

这是因为ng-class-even允许提供expression。 在你的问题中,你说:

  

这一行为什么条纹写成这样的“'条纹'”而不是这个“条纹”

如果您尝试这样做,Angular认为striped$scope中附加的变量。因此,使用'striped'告诉角度您传递给指令的表达式是字符串值

答案 2 :(得分:1)

beacuse ng-class-even和odd都需要表达 并且您需要String,因此您必须编写String,因为您需要硬编码字符串 这里是ng-class-even

的文档

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

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