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>

そうでない場合は、ドナルのソリューションが機能します

于 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 に答える