【问题标题】:What is $event in Angular Material and do I need it with UI Router?Angular Material 中的 $event 是什么,UI 路由器需要它吗?
【发布时间】:2015-09-20 23:58:57
【问题描述】:
我也发现自己正在研究this unanswered question,但我也发现自己想知道找到答案是否重要?我搜索了$event 并查看了角度材料(至少是 API 文档左侧菜单中的项目)和材料文档,但没有找到任何参考。我只在 UI Router 文档中找到了对它的引用,表明它可以停止事件传播。
那么$event 是什么?为什么它被传递到$mdDialog?如果我使用ui-routeronEnter,我需要它吗?
【问题讨论】:
标签:
javascript
angularjs
angular-ui-router
angular-material
【解决方案1】:
直接来自docs:$event 对象是一个jQuery Event Object 的实例,当 jQuery 存在时或类似的 jqLite 对象。
在angular-material的情况下,它用于引用dom事件对象,例如$mdDialog中使用click的事件对象
更新:
您必须将状态更改包装在 ng-click 事件中以获取 $event 对象并将该事件对象传递给 $state.go():
<div ng-app="myApp" ng-controller="myController">
<a ng-click="show($event)">add campaign</a>
</div>
然后配置你的状态:
.state("campaigns.add", {
url: "/add",
resolve: {
event: function($stateParams) {
return $stateParams.event;
}
},
onEnter: function($mdDialog, $state) {
var ev = null;
$mdDialog.show(
$mdDialog.alert()
.parent(angular.element(document.body))
.title('This is an alert title')
.content('You can specify some description text in here.')
.ariaLabel('Alert Dialog Demo')
.ok('Got it!')
.targetEvent(event)).then(function() {
$state.go('done');
});
}
})
这是一个基于另一个问题的代码的工作演示:http://jsfiddle.net/f30wesj3/2/