2013-03-20 110 views
0

结合我修改了AngularUI,引导direvtive工具提示,以帮助我显示错误消息,这里是我做过什么至今:http://jsfiddle.net/distractedBySquirrels/TaAHZ/AngularJS:更新模板,通过指令

但我有动态消息的问题。第一次将鼠标悬停在第一个输入字段上时,消息位置错误,这是因为模型尚未正确更新。当然,第二次鼠标悬停后,工具提示是在正确的位置。但如果要显示的消息再次发生变化,则会发生同样的故障。

我使用$parse更新模板:

$parse('tt_content').assign(scope, 
    getErrorMessage(ctrl.$error) || attrs.tooltip 
); 

好像不是所有的听众都revceived和更新,“ttHeight”和“ttWidth”仍设置为“老”的价值观。消息/模型的正确更新仅适用于$ observe,这由第三个示例说明。

我坚持,不知道我做错了什么? :(

回答

0

的问题是,当你修改模型与应用$,则需要​​手动以通知该模型的所有观察家激活消化周期。因此,基本上,你需要添加scope.$digest();每当你改变的范围做这样的事情scope.$apply(show);

我修改你的代码我的建议在这里http://jsfiddle.net/TaAHZ/2/

+0

'$ apply'导致角进入其[摘要环路(http://docs.angularjs.org/guide/概念#运行时)。“$ digest循环持续迭代,直到模型稳定。”你不还需要调用'$ digest' - 这只会导致Angular再次进入摘要循环。你的小提琴似乎不能解决问题。 – 2013-03-21 15:27:48

+0

问题在http://jsfiddle.net/TaAHZ/2/中没有解决?这对我来说看起来很好(假设延迟是一种理想的行为,参见JS第109行)。 我相信手动调用$摘要,即使在$ apply之后,也可以解决这个问题。 – odiseo 2013-03-21 16:10:42

+0

我在Chrome中试过它,并且第一个输入字段的工具提示仍然出现在错误的地方,最初是您的小提琴。如果我将鼠标悬停在字段上,则工具提示位置不正确。如果我再次鼠标滑过,它就会出现在正确的位置,就像OP的小提琴一样。 – 2013-03-21 16:14:41