在我的 angularJs 文件中,我在由我的 md-select 设置的变量上设置了一个手表
<md-select ng-model="NC.common.commonType" ng-model-options="{trackBy: '$value.id'}" flex="25" placeholder="Common Type" ng-disabled="!NC.isEdit()">
在我的控制器中:
scope.$watch('NC.common.commonType', function (new, old) {
modal.launchModal('Common type changed', '<p>Are you sure?</p>')
.then((result) => {
if (!result) {
vm.module.placementType = angular.copy(oldValue);
});
}, true);
因此,当他们选择另一个选项时;它会触发一个模态。此模式会询问您是否确定要更改模态。如果您说不,我将监视变量设置回旧值;并忽略新值。这将触发$watch无限循环。
这就是 ng-change 的样子
<md-select ng-model="NC.common.commonType" ng-value="NC.common.commonType" ng-change="CC.onChange(NC.common.commonType,'{{NC.common.commonType}}')">
vm.onChange = function(newValue, oldValue) {
modal.launchModal('Placement type changed', '<p>Are you sure?</p>')
.then((result) => {
if (!result) {
vm.module.placementType = angular.copy(oldValue);
}
});
};
这在没有无限循环的情况下工作
也许有一种方法可以通过更改实际更新模型的方式来做到这一点; 但是,除了可能找到一种在 if 语句中注册/注销监视的方法之外; 这可能不是一个好主意。