0

このようにバックエンドで表す必要があるデータ プロパティがあります。

YYYY-MM-DD

ただし、角度のあるマテリアルの日付ピッカーには日付オブジェクトが必要です。したがって、プロパティを使用するだけだと思います。ただし、プロパティを作成すると、無限再帰が発生します。

私の JSData モデルは次のようになります。

function BlogFactory (DS) {
  return DS.defineResource({
    name: 'Blog',
    endpoint: 'blog',
    idAttribute: 'slug',
    computed: {
      _publish_at: {
        enumerable: true,
        get: () => {
          if (this.publish_at) {
            return moment(this.publish_at).toDate();
          }
        },
        set: (v) => {
          this.publish_at = moment(v).format('YYYY-MM-DD');
        }
      }
    }
  });
}

私のHTMLは次のようになります。ブログはブログオブジェクトです。

  <md-datepicker ng-model="blog._publish_at"
      ng-model-options="{'getterSetter': true}"></md-datepicker>

このエラーが発生します。

[$rootScope:infdig] 10 $digest() iterations reached. Aborting!

これを修正する方法を知っている人はいますか?ありがとうございました!

4

1 に答える 1

0

これは、Angular のダーティ チェックが原因だと思います。各ダイジェスト ループ中に、Angular は の現在の値が前のループの値と等しいかどうかをチェックblog._publish_atします。プロパティにアクセスするたびに呼び出される ES5 ゲッター関数を使用しているため、Angular は各ダイジェストループ、したがって値が変化していると考えています。

この特定のプロパティのゲッター/セッター ロジックをモデル インスタンスからビュー (コントローラー/ディレクティブ) に移動することを検討する必要がある場合があります。この場合、ES5 ゲッター/セッターの使用を中止します。

于 2016-04-02T01:49:02.290 に答える