私がやろうとしていることはかなり単純だと思いますが、Angular を使用して正しいアーキテクチャを判断できないようです。
コントローラーやその他の Angular コードでメッセージを追加できるように、MessageCenter が必要です。これを行う正しい方法は、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
を実現するには、それを行う必要があり、これをすべて機能させる方法がわかりません。サービスから「エラー:引数 'スコープ'が必要です」というメッセージが表示されるだけです。
メッセージを複製/追加し、メッセージ dom 要素のディレクティブを処理できるグローバル メッセージ センターをセットアップするにはどうすればよいですか?