加载HTML后,调用函数AngularJS

时间:2016-08-02 08:53:55

标签: javascript html angularjs angularjs-directive

伙计我有以下指令:

describe('Regex demo', function() {
    afterEach(function() {
        httpBackend.flush();
    });
    describe('Normal regex used once', function() {
        var url = new RegExp(baseUrl);
        it('first test', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
    });
    describe('Normal regex used multiple times', function() {
        var url = new RegExp(baseUrl);
        it('first test', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
        it('second test, no problem', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
    });
    describe('Regex with GLOBAL flag', function() {
        var url = new RegExp(baseUrl, 'g');
        it('first test', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
        it('second test with global, this will not pass!', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
    });
    describe('Regex with GLOBAL flag in before each', function() {
        var url;
        beforeEach(function() {
            url = new RegExp(baseUrl, 'g');
        });
        it('first test', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
        it('second test, passes although regex is global, it was renewed in     the before each', function() {
            httpBackend.expectGET(url).respond(200, {});
            someService.someFunction();
        });
    });
});

现在在HTML中我对其中一个数组进行了ng-repeat(例如 arrayParam1 )并且我显示了一些东西。现在,我可以假设的目标是在HTML完全加载后触发 scope.someEvent (完成ng-repeat的迭代)。

当我使用 $ on 时,它甚至不会停止在调试器上。如果我将其更改为 $ watch ,它会在JS中完成所有代码后停止,但HTML仍未呈现,并且在视图完成之前触发了我想要的内容。

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用$ timeout。

$timeout(function () {
   scope.someEvent();         
});

这会有所帮助。

或者如果您不想使用 $ timeout ,您需要做的是为该指令创建另一个指令父级并在父级链接阶段执行或触发该函数