AngularJS:在他的工作之后执行代码

时间:2013-04-28 15:48:48

标签: javascript events angularjs

我希望在AngularJS完成后执行一些代码,以便在事件发生后更改HTML。我试图做以下事情:

angular.module('ngC', [], function($routeProvider, $locationProvider)
{
    $locationProvider.html5Mode(true);
})
.directive("carousel", function () {
    return function (scope, element, attrs) {
        scope.$watch("imgs", function (value)
        {
            //  Here my code
        });
    };
});

问题是我的代码是在AngularJS替换{{}}代码之前执行的,但我想在之后执行它。

2 个答案:

答案 0 :(得分:0)

如果newValue与$ watch听取功能中的oldValue不同,只需比较一下这是否会发生变化。

scope.$watch("imgs", function (newValue, oldValue)
{
    if(newValue !== oldValue) {         
       // Here my code
    }
});

编辑:来自文档

  

在观察者注册观察者之后,异步调用侦听器fn(通过$ evalAsync)来初始化观察者。在极少数情况下,这是不合需要的,因为当watchExpression的结果没有改变时会调用监听器。要在侦听器fn中检测此场景,您可以比较newVal和oldVal。如果这两个值相同(===)则由于初始化而调用了监听器。

答案 1 :(得分:0)

我找到了答案:jQuery doesn't work in AngularJS ng-view properly

// (inside some function with $rootScope available)
$rootScope.$on('$viewContentLoaded', function() {
    // ... (multiview init code here) ...
});
相关问题