2016-03-29 10 views
1

私は角のあるアプリに2つの指示があります。console.logに渡されたときにangelがngModelに追加するオブジェクトが未定義として表示されるのはなぜですか?

ディレクティブ1には、オブジェクトの配列であるngModelがあります。 ディレクティブメソッドを使用して、配列の最後にオブジェクトをプッシュします。

たとえば、元のngModel配列は[1,2,3,4]で、配列を[1,2,3,4,5]のように見えるように5を追加しています。

このngModelは、ngModelとして2番目のディレクティブに渡されます。 console.logに配列を5つすべて表示することができますが、最後に追加した項目にアクセスしようとすると表示されません。たとえば、配列のforeachを実行すると、最後の項目が存在しないようになります。

アイテムにアクセスできません。誰でも何か考えがありますか?

ありがとうございます!

+0

は助けることができるでしょう。 – Aviro

答えて

0

link関数を使用して、親ディレクティブに5番目の項目を追加するとします。

linkの機能には、prepostという2種類の機能があります。 parentがあり、childディレクティブがネストされているとします。

  • 親プリリンク
  • 子プリリンク
  • 子ポストリンク
  • 親ポストリンク

で:リンク機能は、この順序で呼び出さしようとしていますディレクティブオブジェクト表記でlinkを使用すると、デフォルトのままになります。これはリンク後の機能になります。

return { 
    link: function (scope, element, attrs) { } 
} 

そして、あなたは親ポストリンクであなたの5番目の要素を追加した場合、それは子リンクが呼び出された後、それが追加されるように、子供のために使用することはできません。子に適切に初期化されたデータを与える方法は、pre-linkまたはcontroller(ただし、後者はここでは範囲外です)を使用する方法です。ここで

return { 
    link: { 
     pre: function (scope, element, attrs) { } 
    } 
} 

はあなたの例で作業plnkrです:あなたはあなたのコードを示す場合http://plnkr.co/edit/24KrGLdnkDCrLr2SzXhQ?p=preview

関連する問題