【问题标题】:AngularJS $watch for element width changeAngularJS $watch 用于元素宽度变化
【发布时间】:2015-10-16 13:13:45
【问题描述】:

在过去的 3 天里,我一直在网上搜索,试图弄清楚当 angular 注意到 div 的宽度发生变化时如何让指令运行。 我不断看到相同的示例说明我应该如何实现这一目标,但是它们对我不起作用,我不知道为什么。

我又回到了第一格。我要做的就是:当 div 的宽度发生变化时,更新 div 的 css 属性(具有指令作为属性)。

我需要知道如何获取角度来检查属性何时发生变化。

这是我目前所拥有的:

.directive('stayPut', function () {
    var linker = function (scope, element, attrs) {

        scope.getElemWidth = function () {
            return element.width();
        };

        scope.$watch(scope.getElemWidth, 
            function (newWidth, oldWidth) {
                var deltaWidth = newWidth - oldWidth;

                console.log(deltaWidth);

                element.css('top', 
                    (parseInt(element.css('top')) + 
                    deltaWidth)                   +
                    'px');
        }, true);

        element.bind('resize', function () {
            scope.$apply();
        });
    };

    return {
        link: linker,
        restrict: 'A'
    }
});

我知道这里的问题是:

element.bind('resize', function () {
    scope.$apply();
});

我对它的工作原理有一个模糊的了解,但我不明白为什么它在这里不起作用。

【问题讨论】:

    标签: angularjs resize bind directive watch


    【解决方案1】:

    试试这个:

    element.on('resize', function () {
        scope.$apply();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 2011-10-10
      • 2016-10-04
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      相关资源
      最近更新 更多