2016-11-09 6 views
1

私はこの作業を先にしていたと言えるかもしれませんが、今は親スコープを更新してページに表示できません。

親では、ディレクティブから更新したい簡単なスコープがいくつかあります。 親コントローラでは、このように設定しました。私はそれが私がテストのために、それは非常に簡単になると、ここでディレクティブです

{{$scope.messageContent}} 

を表示している親ビューで

$scope.messageContent = 'The initial content'; 

。ディレクティブ内の私のリンク関数では、私はこのコードを持っています:

link: function (scope, element, attrs) { 
    scope.$parent.messageContent = 'New content'; 
} 

単に親を更新しません。私はここで何が欠けていますか?

おかげ

+0

あなたは、ブロードキャストhttp://stackoverflow.com/questions/29999407/send-an-event-using-emit-from-directive-to-controller –

答えて

0

はおそらく、新しいスコープを作成しますng-ifか、別の角度指令(NG-繰り返し、NG-スイッチを、...)持っているので、あなたはより多くの$parent宣言してチェーンを行かなければなりません。

より良いオプションは、オブジェクトを使用することです。

コントローラー:解像度の問題を解決する代わりに、プリミティブのオブジェクトを使用して

$scope.message = {content: 'some content'}; 

指令

link: function (scope, element, attrs) { 
    scope.message.content = 'New content'; 
} 

が原因のJavaScriptの原型継承に努めています。詳細な回答については
- これを参照してください。What are the nuances of scope prototypal/prototypical inheritance in AngularJS?

+0

を放出してみてください$ parent.message.content = '新しいコンテンツ'; ? –

+0

いいえ、JSプロトタイプの継承オブジェクトはプリミティブとは異なる扱いを受けます。 –

+0

ありがとう、ありがとう。しかし、動作しません。プロパティ 'content'を未定義に設定できません。私はそれを私の指示に入れます。この場合のコントローラは親機にあることに注意してください。コントローラーの指示ではありません。私は指令でリンクを使用しています。 –

関連する問題