加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – ng-change之前的角度下拉确认

发布时间:2020-12-17 16:57:50 所属栏目:安全 来源:网络整理
导读:我有一个下拉列表,如果用户不想继续,则需要取消ng-change事件. previousPortfolioId值在$scope中正确设置,但视图仍显示更改的值.我尝试了$scope.$apply也适用,但没有工作.如何取消ng-change事件? Template.html select style="width:200px;" ng-model="Sele
我有一个下拉列表,如果用户不想继续,则需要取消ng-change事件. previousPortfolioId值在$scope中正确设置,但视图仍显示更改的值.我尝试了$scope.$apply也适用,但没有工作.如何取消ng-change事件?

Template.html

<select style="width:200px;" ng-model="SelectedPortfolioId" ng-change="PortfolioSelectionChange(SelectedPortfolioId)" ng-options="Portfolio.BlendId as Portfolio.BlendName for Portfolio in Portfolios">
</select>

Controller.js

$scope.PortfolioSelectionChange = function (SelectedPortfolioId) {
var previousPortfolioId = $scope.SelectedPortfolioId;
if ($scope.IsPageDirty) {
    var promise = DisplayConfirmation('Your unsaved changes will be lost. Do you want to continue?');
    promise.done(function () {
     // do something 
    });

        promise.fail(function () {
                // cancel the change
            $scope.SelectedPortfolioId = previousPortfolioId;
        });
    }
};

解决方法

首先,您无法取消更改事件.见这里: https://developer.mozilla.org/en-US/docs/Web/Events/change它说它不可取消.但是,您可以阻止更改绑定到窗体控件的模型,然后还原窗体字段值.

您可以使用ng-model-options并将updateOn设置为自定义事件来完成此操作. NG-模型选项= “{updateOn: ‘确认’}”

下面的指令将显示确认消息,如果接受,则使用ngmodelcontroller更新模型.如果确认被拒绝,则表单字段值将设置回模型值中存储的值.

这很好,因为任何针对相同型号值的手表都不会触发.

(function () {
  'use strict';
  angular.module('app.registration')
    .directive('confirm',function ($window) {
      return {
        require: 'ngModel',link: function (scope,el,att,ctrl) {
          var message = att.confirm;
          el.on('change',function (){
            var val = ctrl.$modelValue;

            if (!val || $window.confirm(message)) {
              ctrl.$setViewValue(el.val(),'confirmed');
              ctrl.$$debounceViewValueCommit('confirmed');
            }
            else {
              el.val(val);
            }
          });
        }
      };
    });
})();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读