2

この質問へのフォローアップ: AngularJS data bind in ng-bind-html?

補間したい値が ng-repeat で作成されたスコープに添付されている場合はどうなりますか?

myDict = {'Suggestion' : $interpolate('Vote here if you think {{player.name}} is right!')($scope) 
          ...};// $scope is wrongly passed here as 'player' is not a scope variable,

その後

<div ng-repeat="player in players"> <span ng-bind-html="myDict['Suggestion']"></span> </div>

カスタムディレクティブなしでそのようなことを行うことは可能ですか?

4

1 に答える 1

1

ありがたいことに、関数をいつ呼び出すかを決めるのはあなたです。

$scope.myDict = function (scope) {
  return {'Suggestion' : $interpolate('Vote here if you think {{player.name}} is right!')(scope);
}

次に、HTML で:

<div ng-repeat="player in players">
    <span ng-bind-html="myDict({player: player})['Suggestion']"></span>
</div>

これにより、オブジェクト リテラルを使用してプレーヤーごとに 1 回関数が呼び出され、これが呼び出しの「スコープ」として渡され$interpolateます。


ただし、何千ものレコードがある場合、毎回関数を呼び出すと何らかのパフォーマンスが発生する可能性があることに注意してください。打つ。私が考えることができる唯一の方法は{{players[$index].name}}$interpolate通話で使用することです...

于 2016-08-20T20:09:11.297 に答える