0

チェックボックスを入力すると、チェックボックスcustomer.isCompletedが true または false に設定され、firebase api使用して顧客データが保存されますng-change

input type="checkbox" ng-model="customer.isCompleted" ng-change="sc.data.$save(customer)"

ただし、顧客がチェックボックスをオンにしたときに、確認を求めるプロンプトが表示されるようにしたいと考えています。ユーザーが OK を押した場合、ボックスをチェックし、ngModel を更新して起動する必要がありますngChange。それ以外の場合は何もしません。確認ボックスにチェックを入れるとメッセージ 1 が表示され、チェックを外すとメッセージ 2 が表示されます。

どうすればこれを実装できますか。私はディレクティブを想定していますが、それをどのように実装するかわかりません。

4

2 に答える 2

1

いくつかの試行錯誤の後、機能するコードを見つけました。karaxuna の $parsers ソリューションを拡張しました。ここで行っているのは、$viewValue と $modelValue をチェックして、キャンセル ボタンが押されたときに viewValue を修正することです。

 return {
  restrict: 'A',
  require: 'ngModel',
  link: function(scope, element, attrs, ngModel) {

    var x = false;

    ngModel.$parsers.push(function(val) {
      if (ngModel.$viewValue === true && ngModel.$modelValue === false) {
        if (val && confirm('sure want to check?')) {
          return val;
        } else {
          ngModel.$setViewValue(x);
          ngModel.$render();
          return x;
        }
      }

      if (ngModel.$viewValue === false && ngModel.$modelValue === true) {
        if (!val && confirm('sure want to uncheck?')) {
          return val;
        } else {
          ngModel.$setViewValue(!x);
          ngModel.$render();
          return !x;
        }
      }

    });

  }
};
于 2015-02-20T07:53:29.717 に答える