javascript - AngularJS/jQuery : changing text in span doesn't fire resize event

标签 javascript jquery angularjs angularjs-directive

在更改范围内的文本后,我无法让 jQuery 的 resize 事件在 span 上触发。

我使用 AngularJS 指令将事件处理程序应用于 span 元素:

angular.module("test.directives", [])
    .directive("trackSize", ["$parse", function($parse) {
        return function(scope, element, attrs) {
            function callback() {
                var size = { w: element.width(), h: element.height() };
                scope[attrs.trackSize].call(scope, size);
            }
            element.on("resize", function() {
                console.log("resize");
                scope.$apply(callback);
            });
            callback();
        };
    }]);

但是当 span 中的文本发生变化时,我没有看到回调触发。如果相关:正在使用嵌入式 AngularJS 表达式更改文本。

我的实际(完整)代码片段可以在 jsFiddle 上看到:http://jsfiddle.net/KkctU/13/

最佳答案

resize 事件不适用于文档中的元素,例如 span。它只能在 window 上使用。

Here is a plugin that might help you .我没有使用过它,但它似乎适合您。

不过,最后,在您的指令中设置一个监视绑定(bind)到它的任何内容可能会更好/更容易,然后检查文本更改时高度和宽度是否已更改。就像一个想法:

app.directive('trackSize', function () {
   return function(scope, element, attrs) {
       var w = element.width(),
           h = element.height();
       scope.$watch(attrs.trackSize, function(v) {
           element.text(v);
           var w2 = element.width(),
               h2 = element.height();
           if(w != w2 || h != h2) {
              //TODO: do something here, the size has changed.
           }           
       });
   }
});

关于javascript - AngularJS/jQuery : changing text in span doesn't fire resize event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669721/

相关文章:

javascript - Typescript - 全局函数?

javascript - 按计算尺寸订购的试剂组件

javascript - 无法将事件监听器附加到 Canvas ?

jquery - 为什么我的 DIV 比它的内容小?

javascript - 如何将表单数据发送到两个或多个 PHP 文件?

javascript - 空json输出导致的错误 "Object.keys called on non-object"

php - 使用 php session 加载 Jquery 内容

javascript - 如何从 AngularJS Controller 将值设置为 AngularJS 常量文件

javascript Angularjs 从数组中获取单个值

jquery - 为什么我的 ajax 调用在 Chrome 扩展中是同步的?