1

属性がありng-classます (自分で書いたわけではありません)。controller の文字列変数にバインドされます。次のようになります<some-tag ng-class="'indicator_' + $ctrl.stringValue"></some-tag>

ウィンドウが最初にロードされたとき-正しいデータが含まれていますが、コントローラーで文字列が更新された後-class要素をクリックした後にのみ属性の値が更新されます(クリックするとリストが開きますが、私はそうは思いません)それは関連しています)。

これらの場合に最初に確認することは、コードが . で囲まれていること$scope.$applyです。それを追加しようとすると、「$digest は既に進行中です」というエラーが表示されます。情報を探して$ctrlAngularJS コンポーネントのドキュメントこのサイトng-classを読み、これらの主題に関する基本的な背景を説明しました。

ng-class問題は、 withの例が見つからなかったということです$ctrl。多分それは無関係ですが、そうではないかもしれません:)

件名で見つけた無関係な質問の例は次のとおりです: Angular ngClass is not updated my classes even even my condition change as expected . 一般に、私が見つけたほとんどの例には中かっこが含まれていますが、これは文字列をバインドしているため、この場合は関係ないと思います (おそらく私はそれについて誤解しています:))。

おそらく正しくバインドされていないと思いますが、理由はわかりません。


編集:

件名を検索し続けた後、それが に関連しているかどうかはわかりませんng-class(そのため、タイトルも編集しました)。リフレッシュの問題のように見えます。

私が読んだところはどこでも、Angular はダイジェスト関数を独自に呼び出す必要があり、干渉するべきではないと言っているので、ページが更新されない理由について私は困惑しています。

編集2:

私は を使用してtypeScriptおり、stringValueはサービスからのイベントを介して更新されます。しかし、文字列は更新されます-そのため、問題を理解するための関連情報であるかどうかはわかりませんが、言及する価値があります:)

4

2 に答える 2

1

問題が解決しました!!:D

私がしなければならなかった$timeout(0)のは、コントローラーの文字列を更新した後に追加することだけです!

説明: ダイジェストの問題で、 を使用できなかった理由は$scope.$apply()、直接実行しようとしたためです。つまり、最初にそのスコープにダイジェストがないことを確認してから、適用を実行します

それを行う簡単な方法は、 を使用すること$timeout(0)です。

于 2016-08-04T09:05:31.160 に答える