我创建了一个指令来打开一个模式对话框。这是代码:
[编辑] JSFIDDLE:http: //jsfiddle.net/graphicsxp/fcQZk/8/
问题:关闭按钮不会关闭模式。
angular.module('person.directives').
directive("person", function($dialog) {
return {
restrict: "E",
templateUrl: "person/views/person.html",
replace: true,
scope: {
myPerson: '='
},
link: function (scope, element, attrs) {
},
controller: function ($scope)
{
$scope.opts = {
backdrop: true,
keyboard: true,
backdropClick: true,
templateUrl: 'person/views/searchPerson.html'
};
$scope.openDialog = function () {
var d = $dialog.dialog($scope.opts);
d.open().then(function (result) {
if (result) {
alert('dialog closed with result: ' + result);
}
});
}
}
}
});
这很好用。现在,在对话框中,我使用了另一个指令:
<search-person></search-person>
和js:
angular.module('person.directives').directive("searchPerson", function ($dialog) {
return {
restrict: "E",
template: "<div>some template</div>",
scope: {},
link: function (scope, element, attrs) {
},
controller: function ($scope)
{
$scope.close = function (result)
{
$dialog.close(result);
}
}
}
});
但是 $dialog.close(result) 没有做任何事情。我注意到 $scope.close 为空。我怀疑这与注射有关。我将 $dialog 注入到 searchPerson 指令中,而我想我应该使用从 person 指令打开的对话框。我只是不知道...有什么想法吗?
[编辑 2]
我已经用指令 searchPerson 替换了模态的模板。现在我没有范围问题(请参阅更新的 jsfiddle)。但是关闭按钮仍然不起作用!错误是:
Object #<Object> has no method 'close'
似乎 $dialog 没有在 searchPerson 指令中正确注入....