1

みんな私は何かを実験しています。

テンプレート

<input my-checkbox type="checkbox" ng-model="object.isChecked" ng-change="triggerChange()" ng-click="triggerClick()">

ディレクティブ my-checkbox (coffeescript で記述)

angular.module('myApp')
  .directive('myCheckbox', ()->

    return {
      restrict: 'A'
      replace: true,
      template: """
                <div>
                    <input type="checkbox" ng-model="ngModel" ng-change="ngChange()" ng-click="ngClick()">
                </div>
                """
      scope: {
        ngChange: "&"
        ngClick: "&"
        ngModel: "="
      }

      }
  )

観察

チェックボックスをオンにすると、関数 triggerChange() が起動しますが、object.isChecked の値は変更されません。次に、関数 triggerClick() が object.isChecked 値の変更で起動します。

私は疑問に思っています、それは本当ですか、データバインディング "=" は ng-change の後に発生しますか?

4

1 に答える 1

0

参照: ngModelOptions

モデルの更新方法を調整できます。ngModelOptionsを使用して、モデルの更新および/またはデバウンス遅延をトリガーするイベントのカスタム リストを指定して、実際の更新がタイマーの期限が切れたときにのみ行われるようにすることができます。このタイマーは、別の変更が行われるとリセットされます。

たとえば、これを試してください:

<input type="text" ng-model="term" ng-change="fn(term)" ng-model-options="{debounce: 750}" />
于 2015-08-01T16:57:06.077 に答える