2014-02-06 68 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

我明白你的痛苦......我在幾周前有過類似的問題...... :) –

相關問題