ngrepeat 别名 as 和 controller as

ngrepeat alias as and controller as

我收到这个错误https://code.angularjs.org/1.3.16/docs/error/ngRepeat/badident 当我尝试将 ngRepeat 别名用作语法并将控制器用作语法时:

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

不允许或我做错了什么?

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

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

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

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

如果不是,那么 Donal 的解决方案将起作用

我明白了为什么我遇到了类似的问题。

Angular 文档对此并不明确...但是如果您要使用 Controller As 语法,则必须在控制器上将模型值设置为 "this"。您不能将值设置为 $scope.

当您在添加别名后检查 $scope 时,您可以在您的父 $scope 上看到一个新的 属性,其中包含您的别名。

我的别名是 pmt。我从

更改了我的属性和函数
$scope.myProperty  

var vm = this;
vm.myProperty

当您检查我的别名控制器的 $scope.$parent 时,您会看到它的属性中列出了 vm。这就是他们使用别名的方式。

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