1

ngMessages ディレクティブを使用して、自動保存するリッチ テキスト エディターの 2 つの異なるメッセージを表示しようとしています...単純に「保存済み」と「保存中...」です。

コントローラーの背後にあるサービスからプロパティを返す関数を返すコントローラーの変数を公開しました (明らかにこれが双方向バインディングを取得する唯一の方法であるため)。

<div class="col-md-2" ng-messages="saveStatus" role="alert">
    <div ng-message="saving">Saving changes.....</div>
    <div ng-message="'saved'">SAVED!</div>
</div>

そして、私のコントローラー変数は非常に単純です

$scope.saveStatus = function () {
     return reportService.status;
}

そして、私のサービスは、プライベート変数に get アクセサーを配置するだけです

 get status() {
       return privateStatus;
 }

Chrome 開発ツールでは、saveStatus がスコープ内にあり、機能を返していることがわかります。関数を使用しなくても (メッセージは常に「SAVED!」と表示されるはずです)、メッセージは表示されません....

出力は ngMessages によってフォーマットされているように見えるので、ロードされて利用可能だと思いますが、$errors コレクションを使用していない Web 上の例は見つかりません!

<div class="col-md-2 ng-inactive" ng-messages="saveStatus" role="alert">
    <!-- ngMessage: saving -->
    <!-- ngMessage: saved -->
</div>
4

1 に答える 1

1

私も同じ問題を抱えていました。

ドキュメントによると、 ng-messagesキー/値のコレクションをディレクティブに関連付けることが可能であり、コレクション$errorの例にすぎません。

ngMessages ディレクティブは、ngMessages 属性で設定されたキー/値のコレクションをリッスンします。ngModel ディレクティブは $error オブジェクトを公開するため、このエラー オブジェクトを ngMessages と共に使用して、通常の angular テンプレート ディレクティブよりも簡単な方法でコントロール エラー メッセージを表示できます。

コレクション オブジェクトを返すようにサービスを更新してみてください。たとえば、「保存中」の状況を報告するには、{saving : true} を返すようにしてください。これは私にとってはうまくいきました。

于 2015-11-21T12:47:53.017 に答える