Javascript 如何在AngularJS中观察自定义事件?
简单示例:我有一个textarea,希望为其提供其他行为:按Javascript 如何在AngularJS中观察自定义事件?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,简单示例:我有一个textarea,希望为其提供其他行为:按enter键执行操作,然后按shift+enter 我想我应该提供额外的指令来添加该行为。我已经做到了: 还有一件黑客的事情对我来说似乎很奇怪:我手动调用$digest()。可以吗?有什么想法吗 JS: 角度模块('Chat',[]) .指令('enterSubmit',函数(){ 返回{ 限制:“A”, 链接:函数(范围、元素、属性){ var提交; $(元素)({ 向下键:功能(e){ 提交=错误; if(e.which==13&&
enter
键执行操作,然后按shift+enter
我想我应该提供额外的指令来添加该行为。我已经做到了:
还有一件黑客的事情对我来说似乎很奇怪:我手动调用$digest()
。可以吗?有什么想法吗
JS:
角度模块('Chat',[])
.指令('enterSubmit',函数(){
返回{
限制:“A”,
链接:函数(范围、元素、属性){
var提交;
$(元素)({
向下键:功能(e){
提交=错误;
if(e.which==13&&!e.shiftKey){
提交=真;
e、 预防默认值();
}
},
keyup:函数(){
如果(提交){
范围$eval(attrs.enterSubmit);
//手动刷新模型更改
范围。$digest();
}
}
});
}
};
});
函数ChatCtrl($scope){
$scope.messages=[{
文本:“示例消息”,
日期时间:新日期()
}];
$scope.add=函数(){
$scope.messages.push({
text:$scope.message,
日期时间:新日期()
});
$scope.message='';
};
$scope.message='';
}
留言:
单击“输入”提交:)
发送消息!
消息列表:
正文
日期
{{message.text}
{{message.datetime}日期:“HH:mm:ss”}
但这样做正确吗?是的,在指令的链接函数中绑定事件正是您想要做的
调用$digest并不困难-示例中的消息是在
keyup
上添加到模型中的,Angular不会消化这些更改,直到有人告诉它。它实际上会在下一次keydown
时被消化,但由于您需要在keydup
之后生成$digest,因此您必须手动调用它。太好了,谢谢您的解释。但我对事件还不了解。AngularJS正在侦听页面上的所有事件,然后检查每个对象的状态?有什么可以理解的文章吗?我在AngularJS上读过这方面的文章,但很难很快理解。我推荐作为一个很好的参考。