我的 AngularJS 网络应用程序需要(您可能猜到)有时会显示模式弹出窗口。在学习 AngularJS 之前,我曾经使用命名空间来集中我的代码,并且我通常将所有 UI 内容放在适当的命名空间中,例如:MyProj.UI.Dialogs.Modal.show()(只是一个示例)。
现在我,尝试在 AngularJS 中应用相同的逻辑。所以,我创建了一个指令:
app.directive('modal', function ($compile) {
return {
restrict: 'E',
replace: true,
templateUrl: '/partials/site/modal.html'
}
});
使用以下模板:
<div>
<h2>{{title}}</h2>
<p>{{text}}</p>
</div>
所以我可以在我的 html 中使用模态标记。
现在,为了控制模态行为,我想使用service,例如:
angular.module('ui', [])
.factory('ui', function ($rootScope) {
var service = {
showConfirm: function (title, text, callback) {
$rootScope.showModal = true;
}
};
return service;
}
);
我会从任何控制器使用它:
app.controller('MyCntl', function (ui) {
$scope.delete = function (referer) {
ui.showConfirm("Confirm", "Please confirm action", function () {});
}
});
但我的问题是:如何将值从控制器传递到服务,再到指令?