0

実際のナビゲーションを構築するために、私はこのアプローチが好きです: http://jsfiddle.net/xUsCc/1/、私はここで見つけました: Angularディレクティブの再帰 、ここでフォローアップの質問も作成しました: how do i bind a directive to an親または分離されたスコープの代わりに注入されたサービス?

問題は、ディレクティブが次のように、親スコープのスコープ変数であるマークアップの属性からデータを取得することです。

<tree family="treeFamily"></tree>

ナビゲーション バーはビューの外にあるため、ルートスコープ以外に変数を取得するスコープはありません。

ユーザーがアクセスできるメニュー項目を持つファクトリ/サービスを注入できると考えていました。分離されたスコープでスコープ変数を設定しようとしましたが、レンダリングが強制終了されました。angularは、分離されたスコープに変数を設定するのが好きではないと思います

    scope: {family: {
        name : "Parent",
        children: [{
            name : "Child1",
            children: [{
                name : "Grandchild1",
                children: []
            },{
                name : "Grandchild2",
                children: []
            },{
                name : "Grandchild3",
                children: []
            }]
        }, {
            name: "Child2",
            children: []
        }]
      }
    }
4

1 に答える 1

0

再帰的なディレクティブが本当に必要な場合は、モデルから初期化する$rootScopeのが正しい解決策のようです。

メニューに 2 つのレベルしかない場合は、 からデータを取得するか、いくつかのメソッド$rootScopeに追加して、メニュー内の項目を制御できるようにするコントローラーに単純にラップします (例: 、など)。$rootScopeaddSection()remoteSection()

Serviceを使用して、異なるコンポーネント間の通信を許可することもできます。

于 2013-09-12T22:06:47.623 に答える