在此示例中,我有一个带有附加指令的输入。该指令旨在在输入旁边显示消息。还有另一个输入和一个用于添加消息的按钮。
显示一些消息后,关注带有附加指令的输入应该会清除消息。http://jsfiddle.net/viro/WBqxf/ http://jsfiddle.net/viro/WBqxf/
因此,我有一个带有隔离模型的指令,并且当具有该指令的元素成为焦点时,我尝试更新该模型。
如果我想更新模型,我似乎必须将事件回调包装在scope.$apply中:
element.on('focus',function(){
scope.$apply(function(){
console.log("focus !");
scope.tstMsg=[];
})
});
我想我必须将它包装在 $apply 中,因为我正在使用 jqlite 事件回调,并且我猜它们在“外部”angularJS 运行,但我没有在文档中找到明确说明。
我做得对还是黑客?
有更好的方法吗?
每当你使用第三方库并执行更改时,你需要通过调用让 Angular 知道$apply()
.
正如 @charlietfl 提到的 ng-focus 更容易:
控制器
$scope.focus = function() {
// Do something
}
HTML
<input ng-model="inp" tst-msg="message" ng-focus="focus()" />
See jsFiddle http://jsfiddle.net/WBqxf/14/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)