我认为我想做的事情相当简单,但我似乎无法使用 Angular 确定正确的架构。
我想要一个 MessageCenter,以便任何控制器或其他 Angular 代码都可以添加消息。我认为正确的方法是使用 MessageCenter 服务。我会在需要的地方注入服务,然后调用 MessageCenter.add()。我遇到的问题是如何编译克隆的 DOM 指令,因为 $compile 需要一个 $scope,而我没有从服务中获得它。
这是我正在尝试的。我不确定对此的正确方法是什么。
<div>
<div id="msg-proto" message-center-msg class="alert alert-success"></div>
</div>
然后:
.factory('MessageCenter', function($compile) {
var that = {}
that.add = function(type, message) {
var n = $("#msg-proto"),
n2 = n.clone();
n.parent().append($compile(n2));
}
return that;
});
我正在注入并调用服务:
.controller('SomeCtrl', function(MessageCenter) {
MessageCenter.add('some msg');
});
我message-center-msg
定义了一个指令,为元素添加一些行为。但为了实现这一点,它需要$compile
'd',我不知道如何让这一切工作。我只从服务中得到“错误:需要参数'范围'”。
如何设置一个全局消息中心,它能够克隆/添加消息并处理消息 dom 元素的指令?