ng-class允许赋值运算符。它是一个错误或功能?

时间:2017-06-13 09:46:48

标签: javascript angularjs ng-class

我最近注意到ng-class允许赋值运算符是一个错误或一个功能。

<li ng-repeat="cat in cats" ng-class="{active: cat = 'some-text'}">{{cat}}</li>

正确使用

<li ng-repeat="cat in cats" ng-class="{active: cat == 'some-text'}">{{cat}}</li>

另请查看plunk behaviour

允许赋值运算符是错误还是功能?

5 个答案:

答案 0 :(得分:2)

这是一个JavaScript表达式评估,而不是特殊的Angular事件。

progressBar0.MaxValue = 289; //First element of array

progressBar1.MaxValue = 151; //2nd

progressBar3.MaxValue = 69; // etc...

如果您看到控制台,它将始终打印 int count = 0; foreach (var item in sortedArray) { new Thread(async () => { ProgressBar p = Controls.Find("progressbar" + count.ToString(), true)[0] as ProgressBar; //how to find the number to increment so they all finish at the same time ? p.Increment(i); }).Start(); cout +=1; } 。同样,You are not converting validation errors to array.Please use the below function and pass validation errors as parameter. public function validationErrorsToString($errArray) { $valArr = array(); foreach ($errArray->toArray() as $key => $value) { $errStr = $key.' '.$value[0]; array_push($valArr, $errStr); } if(!empty($valArr)){ $errStrFinal = implode(',', $valArr); } return $errStrFinal; } //Function call. $result = $this->validationErrorsToString($validator->errors()); 将始终将类var x; console.log(!!(x = 'some-text')); 分配给元素,因为true将始终返回ng-class="{active: cat = 'some-text'}"作为其布尔等效值。

此外,值得注意的是,active在每次迭代中都会更改为cat = 'some-text'。这意味着您的true对象只是cat的数组。

如评论中提到的@Mr_Perfect,如果您有条件地需要将some-text分配给您的元素,请将cats更改为some-text

答案 1 :(得分:1)

这是因为,当您为cat分配一个值时,它会被评估为true,因为cat不是空的或未分开的

答案 2 :(得分:1)

{'active': cat === 'some-text'}是添加类的正确方法,some-text只是一个字符串,如果它与变量cat匹配,则active类将添加到{{} 1}}元素

即使你可以这样做,

li

修改

ng-class="{(condition) ? 'condition_true_class' : 'condition_false_class'}"

在这种情况下,<li ng-repeat="cat in cats" ng-class="{active: cat = 'some-text'}">{{cat}}</li> 会返回cat="some-text"字符串,该字符串始终为true,some-text类将添加到active元素和li cat }当您使用赋值运算符时,变为{{}}

some-text

在这种情况下,如果<li ng-repeat="cat in cats" ng-class="{active: cat == 'some-text'}">{{cat}}</li> 值与cat匹配,那么some-text类将添加到active,而li值将不会因您使用而改变逻辑运算符cat==

答案 3 :(得分:0)

如果您需要使用<li ng-repeat="cat in cats" ng-class="{'active': cat == 'some-text'}">{{cat}}</li> 类活动,请尝试以下方法:

{{1}}

答案 4 :(得分:0)

在GitHub中提出了一个问题并得到了澄清

问题:https://github.com/angular/angular.js/issues/16049

问题 - 评论:https://github.com/angular/angular.js/issues/16049#issuecomment-308092056