[英]AngularJS/jQuery: changing text in span doesn't fire resize event
在我更改了跨度内的文本后,我无法在span
上触发jQuery的resize
事件。
我正在使用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。 它只能在窗户上使用。
这是一个可以帮助你的插件 。 我没有用它,但它似乎正好适合你。
但是,最后,在指令中设置一个监视器可能更好/更容易,无论绑定到它的任何内容,然后检查文本更改时高度和宽度是否已更改。 就像一个想法:
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.
}
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.