2014-02-06 41 views
0

我有以下plunkr:here。任何人都可以请解释为什么trimName指令不改变模板上的文本?我在控制台看到文字“修剪”,但我没有看到它反映出来。我认为我处于“角度世界”,因为我看到$apply already in progress,如果我尝试$应用范围。为什么此范围变量不会触发更改?

+0

鉴于你在这里做的是有可能你可以只使用“修剪”过滤器:http://jsfiddle.net/tUyyx/ –

+0

啊,没有。这只是一个例子。我并不是在寻找修剪功能。我试图找出潜在的问题是什么。 – Geo

回答

1

我们可以将问题想象为“竞态条件” $digest已在进行中,您的值将被AngularJS覆盖。

简单的解决方法将是以后用$evalAsync来评估你的语句:

if(scope.trimName.length > intLimit) { 
    scope.$evalAsync(function() { 
    scope.trimName = scope.trimName.substring(0, intLimit) + "...trimmed"; 
    }); 
} 

Here is an example

+1

这太棒了!我已经将我的头靠在墙上撞了近两个小时:D – Geo

+0

我明白你的痛苦......我在几周前有过类似的问题...... :) –

相关问题