我有以下plunkr:here。任何人都可以解释为什么trimName指令不更改模板上的文本?我在控制台中看到文本“修剪”,但我没有看到它反映出来。我想我处于“有角度的世界”,因为如果我尝试使用范围,我会看到$apply already in progress
。
答案 0 :(得分:1)
我们可以将这个问题视为“竞争条件”之类的问题
$digest
已在进行中,您的值会被AngularJS覆盖。
简单的解决方法是稍后使用$evalAsync
评估您的陈述:
if(scope.trimName.length > intLimit) {
scope.$evalAsync(function () {
scope.trimName = scope.trimName.substring(0, intLimit) + "...trimmed";
});
}