我有两个指令:
module.directive('modal', function () {
return {
restrict: 'A',
templateUrl: "/templates/ui/components/modal.htm",
replace: true,
link: function ($scope, element, attrs) {
console.log("Loaded modal directive.");
},
controller: function ($rootScope, $scope) {
$scope.isOpen = false;
$scope.open = function () {
$scope.isOpen = true;
};
$scope.close = function () {
$scope.isOpen = false;
};
// Global
$rootScope.$on('openModal', function () {
console.log("open"); // How to call open function here?
});
$rootScope.$on('closeModal', function () {
console.log("close"); // How to call close function here?
});
}
}
});
module.directive('popUpWindow', function () {
return {
restrict: 'A',
templateUrl: "/templates/ui/components/pop-up-window.htm",
replace: true,
transclude: true,
link: function ($scope, element, attrs) {
console.log("Loaded pop-up window directive.");
$scope.title = attrs["title"];
},
controller: function ($rootScope, $scope) {
$scope.isOpen = false;
$scope.open = function () {
$scope.isOpen = true;
$rootScope.$emit('openModal');
};
$scope.close = function () {
$scope.isOpen = false;
$rootScope.$emit('closeModal');
};
}
}
});
这个想法是对于所有可能的实例只有一个模态popUpWindow
。
我不知道如何让这两个人互相交谈。如何获取我的模态并将其称为打开和关闭函数?我应该把打开和关闭功能、控制器或链接放在哪里?看起来像控制器,但链接可以访问element
.. 我应该寻找模态的实例还是有一些简洁的 Angular 方法可以做到这一点?
我在弹出窗口上使用 $emit 有一个模式触发功能,但这感觉不是指令之间通信的好方法。
我已经在网上搜寻并尝试了很多东西,但没有找到任何似乎可以解决此问题的方法。这似乎并不明显。