2

私がやろうとしていることはかなり単純だと思いますが、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 要素のディレクティブを処理できるグローバル メッセージ センターをセットアップするにはどうすればよいですか?

4

3 に答える 3

0

心を開くことができます:)

MessageCenter への呼び出しで、 $scope を MessageCenter.add("", $scope); のようにパラメーターとして移動します。

または...この男が提案したような起動時にMessageCenterをスコープにグローバルに公開できます

于 2013-09-29T06:40:55.787 に答える