Angularjs 如何步进这个$watch无限循环?

Angularjs 如何步进这个$watch无限循环?,angularjs,Angularjs,在我的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

在我的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);
scope.$watch('NC.common.commonType',函数(新、旧){
modal.launchModal('Common type changed','您确定吗?

')) 。然后((结果)=>{ 如果(!结果){ vm.module.placementType=angular.copy(旧值); }); },对);

因此,当他们选择另一个选项时,它会触发一个模式。此模式会询问您是否确定要更改模式。如果您说不,我会将关注的变量设置回旧值;而忽略新值。这会触发$watch infinite循环。

有一种方法可以通过更改实际更新模型的方式来实现此目的;howev呃,除了可能找到在if语句中注册/取消注册手表的方法之外,这可能不是一个好主意。

这就是ng更改的外观

<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);

            } 
        });
    };

vm.onChange=函数(newValue、oldValue){
modal.launchModal('Placement type changed','您确定吗?

')) 。然后((结果)=>{ 如果(!结果){ vm.module.placementType=angular.copy(旧值); } }); };

当使用
ng model
时,使用
ng change
而不是创建$watch,这将避免错误。我假设您只想知道NC.common.commonType何时从输入中编辑
。是的,这是正确的。我需要能够保留旧值,以防他们在mod中说不艾尔。