2017-07-13 13 views
0

休憩APIを使用して、共有グループからユーザーを取得しています。特定のグループに存在する現在のユーザーがフォーム(ビュー)に余分なオプションとボタンを表示する必要があります。だから、$ watchを使って残りのAPIの戻り値に割り当てられた変数の変化を検出し、$ watchコールバックの中でビューの変更を定義しています。今度は、Rest APIが$ watch関数を返しますが、ビューはまだ更新されません。その後、私が実行した場合

、コンソールで

angular.element('[ng-controller=controllerName]').scope().$apply(); 

、私のフォームをロード罰金。

+0

スコープを使用してください。時計に$ apply ... –

+0

$ watchコールバックの前にページがレンダリングされると思います。 –

+0

setTimeOut内で$ apply()を試してください。 (この中でsetTimeOutはこれ以外のものではありません) –

答えて

0

あなたのリクエストにAngularの$ httpサービスを使用している場合、ビューの自動更新が処理されます。それを使わずにリクエストを行う場合、Angularはデータが変更されたことを伝える必要があります。

ですが、これを達成する最良の方法ではありません。 $ httpを使うことをお勧めします。できない場合は、単に応答関数で$ timeout()を呼び出してください。このについても

、:。 angular.element('[ng-controller=controllerName]').scope().$apply();

あなたのコントローラ内でこれを呼び出している場合は、単純にスコープを呼び出すことができます$(適用)、DOMにアクセスする必要はありません。この行はあなたの全体的なアプローチに関する問題を暗示しています。

+0

非同期の問題に対して$ qのangularjsを使用しています。しかし、問題は残りの呼び出しと、条件がページの読み込み時に同時に発生するかどうかをチェックすることです。だから、時には約束が解決される前であっても、正しいIf条件が偽になり、それがelse条件になり、この条件に従ってページがレンダリングされます。だから私は変数の変更のための$ウォッチを使用し、それが発生するので、正しいif条件が実行されますが、ページは$ウォッチコールバックとその空の前にレンダリングします。 F12キーを押してコンソールに$ applyを実行すると、ページが正常に読み込まれます。 $ watchコールバック内の$ applyも機能しません。 –

関連する問題