AngularJS:通过指令更新模板绑定

时间:2013-03-20 20:48:34

标签: javascript angularjs

我为工具提示修改了AngularUI-Bootstrap direvtive以帮助我显示错误消息,这是我到目前为止所做的:http://jsfiddle.net/distractedBySquirrels/TaAHZ/

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

我正在使用$parse来更新模板:

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

似乎并非所有听众都已复活并更新,“ttHeight”和“ttWidth”仍设置为“旧”值。消息/模型的正确更新仅适用于$ observe,这由第三个示例说明。

我被困住了,不知道我做错了什么? :(

1 个答案:

答案 0 :(得分:0)

问题在于,当您使用$ apply修改模型时,您需要 手动 激活摘要周期,以便通知所有观察者此类模型。因此,基本上,每当您更改范围(例如scope.$digest();

)时,您都需要添加scope.$apply( show );

我在http://jsfiddle.net/TaAHZ/2/

中使用我的建议修改了您的代码