我有一个简单的指令
angular.module('myApp')
.directive('myDirective', function () {
return {
template: '<p ng-transclude></p>',
restrict: 'A',
transclude: true,
link: function postLink(scope, element, attrs) {
}
}
}
);
我试图在每次翻译内容更改并呈现指令时运行代码 - 我需要已转换的内容。
我想在这种情况下运行的算法示例是:
我尝试了多种形式的scope.$watch
,但无济于事。
答案 0 :(得分:11)
我们可以在监视表达式函数中使用Angular中包含的jqlite来完成此任务。下面是使用jqLite(element.text()。length)监视transcluded元素长度的代码。只要附加了该指令的元素的长度发生变化,手表就会触发。
新长度作为newValue
传递给监视中的第二个函数(因为我们从第一个监视函数返回它)。
myApp.directive('myDirective', function () {
return {
template: '<p ng-transclude></p>',
restrict: 'A',
transclude: true,
replace: true,
link: function (scope, element, attrs) {
scope.$watch(function () {
return element.text().length;
},
function (newValue, oldValue) {
console.log('New Length ', newValue);
});
}
}
});
我在这里有一个工作的jsfiddle:
这解决了单词/字母计数方案。但是你可以在element.text()
本身上编写一个测试,如果你需要它来解决任何变化 - 而不仅仅是长度变化。