0

我想在 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 替换{{}}代码之前执行的,但我想在之后执行它。

4

2 回答 2

0

只需比较 $watch 侦听函数中的 newValue 是否与 oldValue 不同,这将指示是否发生了某些变化。

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

编辑:来自文档

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

于 2013-04-28T17:07:55.997 回答
0

我找到了答案:jQuery 在 AngularJS ng-view 中无法正常工作

// (inside some function with $rootScope available)
$rootScope.$on('$viewContentLoaded', function() {
    // ... (multiview init code here) ...
});
于 2013-05-27T20:29:55.860 回答