5

当我尝试使用 ngRepeat 别名作为语法而控制器作为语法时,我收到此错误https://code.angularjs.org/1.3.16/docs/error/ngRepeat/badident :

<li ng-repeat="item in vm.items | filter:vm.searchString as vm.collections">{{item}}</li>

这是不允许的还是我做错了什么?

4

3 回答 3

9

如果您需要将结果存储在 vm 变量中,您可以这样做

<li ng-repeat="item in vm.collections = (vm.items | filter:vm.searchString)">{{item}}</li>

如果没有,那么 Donal 的解决方案将起作用

于 2015-06-08T17:06:58.563 回答
1

应该是一个简单的标识符(这样你可以用 var {name} 声明它)

<li ng-repeat="item in vm.items | filter:searchString as collections">{{item}}</li>
于 2015-06-08T16:38:33.473 回答
0

我弄清楚为什么我会遇到类似的问题。

Angular 文档没有明确说明这一点……但是如果你要使用 Controller As 语法,你必须在你的控制器上将你的模型值设置为“this”。您不能将值设置为 $scope。

当您在别名后检查 $scope 时,您可以在父 $scope 上看到一个带有别名名称的新属性。

我的别名是 pmt。我改变了我的属性和功能

$scope.myProperty  

var vm = this;
vm.myProperty

当您检查我的别名控制器的 $scope.$parent 时,您会看到 vm 在其属性中列出。这就是他们做混叠的方式。

真的希望文档对此有明确的说明。

于 2016-06-02T23:40:58.187 回答