当我尝试使用 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>
这是不允许的还是我做错了什么?
当我尝试使用 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>
这是不允许的还是我做错了什么?
如果您需要将结果存储在 vm 变量中,您可以这样做
<li ng-repeat="item in vm.collections = (vm.items | filter:vm.searchString)">{{item}}</li>
如果没有,那么 Donal 的解决方案将起作用
应该是一个简单的标识符(这样你可以用 var {name} 声明它)
<li ng-repeat="item in vm.items | filter:searchString as collections">{{item}}</li>
我弄清楚为什么我会遇到类似的问题。
Angular 文档没有明确说明这一点……但是如果你要使用 Controller As 语法,你必须在你的控制器上将你的模型值设置为“this”。您不能将值设置为 $scope。
当您在别名后检查 $scope 时,您可以在父 $scope 上看到一个带有别名名称的新属性。
我的别名是 pmt。我改变了我的属性和功能
$scope.myProperty
到
var vm = this;
vm.myProperty
当您检查我的别名控制器的 $scope.$parent 时,您会看到 vm 在其属性中列出。这就是他们做混叠的方式。
真的希望文档对此有明确的说明。