我有一个数组,我在这个数组上循环并调用一个函数进入这个ng-repeat,这个函数在一个指令的链接函数中 所以我的问题是,ng-repeat循环只有两次(数组项的长度),但调用指令链接函数超过两次 这是我的代码片段
link:function(scope){
$scope.test = function() {
console.log('sssss');
}}
和模板是
<div ng-repeat ="item in items> {{test()}}></div>
请帮我防止调用测试功能超过项目长度。
答案 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
只会在每次重复时初始化(调用)一次。