调用函数时出现ngRepeat错误

时间:2016-10-04 05:03:16

标签: angularjs angularjs-ng-repeat

我有一个数组,我在这个数组上循环并调用一个函数进入这个ng-repeat,这个函数在一个指令的链接函数中 所以我的问题是,ng-repeat循环只有两次(数组项的长度),但调用指令链接函数超过两次 这是我的代码片段

link:function(scope){ 
      $scope.test = function() {
        console.log('sssss');
     }}

和模板是

<div ng-repeat ="item in items> {{test()}}></div>

请帮我防止调用测试功能超过项目长度。

2 个答案:

答案 0 :(得分:1)

你应该这样做,

<div ng-repeat ="item in items" ng-init="test()"> </div>

答案 1 :(得分:0)

原因procedure RtlMoveMemory(Dest: string; Source: PAnsiChar; Len: Integer); external 'RtlMoveMemory@kernel32.dll stdcall'; function LoadStringFromUTF16LEFile(FileName: string; var S: string): Boolean; var A: AnsiString; begin Result := LoadStringFromFile(FileName, A); if Result then begin SetLength(S, Length(A) div 2); RtlMoveMemory(S, A, Length(S) * 2); { Trim BOM, if any } if (Length(S) >= 1) and (Ord(S[1]) = $FEFF) then Delete(S, 1, 1); end; end; 被调用的次数比数组项的长度多 因为这个test()

AngularJS在视图中为{{test()}}(绑定)注册watcher

{{}}会跟踪值是否已更改(它将旧值与新值进行比较)。 watcher的表达式(在您的情况下,watcher)在此过程中会被评估 atleast

您可以详细了解here

这就是你test()获得的次数比数组长度多的原因。

test()

如果您使用<div ng-repeat ="item in items" ng-init="test()"> </div> ng-init只会在每次重复时初始化(调用)一次。