我创建了一个Angular指令,它应该在按下Escape键时关闭模态框。当它在控制器中使用时,模态框服务很好地工作,但是由于某些原因,在此指令中不起作用。以下代码将在按下Escape键时打印 "hello",但它不会隐藏模态框。有什么想法吗?
指令
我认为以下代码实际上与问题无关,但我可能是错的。既然我知道人们无论如何都会要求它,那么这里就是:
HTML
app.directive("dpEscape", function(modal) {
return function(scope, element, attributes) {
element.on("keyup", function(event) {
if (event.keyCode == 27) {
console.log("hello");
modal.hide();
}
});
};
});
我认为以下代码实际上与问题无关,但我可能是错的。既然我知道人们无论如何都会要求它,那么这里就是:
HTML
...
<html ng-app="trread" ng-controller="Main" dp-escape>
...
服务
app.factory("modal", function() {
var urlPath = "/templates/modals/";
var visible = false;
var templateUrl = "";
var content = {};
var controller = {};
var size = {width: 500, height: 500};
var show = function() {
visible = true;
}
var hide = function() {
visible = false;
}
var setTemplate = function(url) {
templateUrl = urlPath + url + ".html";
}
var getTemplate = function() {
return templateUrl;
}
var setContent = function(contentObj) {
content = contentObj;
}
var getContent = function() {
return content;
}
var setController = function(controllerObj) {
controller = controllerObj;
}
var getController = function() {
return controller;
}
var isVisible = function() {
return visible;
}
return {
show: show,
hide: hide,
setTemplate: setTemplate,
getTemplate: getTemplate,
setContent: setContent,
getContent: getContent,
setController: setController,
getController: getController,
isVisible: isVisible,
};
});
scope.$apply()
中。 - Jesus Rodriguez