我想知道为什么当我们在js中更改它的ng-model值时,相应的select elem的$ dirty不会改变。

这是非常基本的(http://jsfiddle.net/HB7LU/2859/

//HTML
<select name="mySelect" ng-model="value" ng-options="item for item in data"></select>

//JS
function MyCtrl($scope, $timeout) {
    $scope.value = "1";
    $scope.data = ["1", "2"];

    $timeout(function() {
        $scope.value = "2";
    }, 3000);
}


这是有角度的错误吗?或$ dirty不应该设置?

最佳答案

当您手动更改输入值时,Angular会为您将输入设置为$ dirty。

要以编程方式执行此操作,请使用$setDirty();

您可能还会发现this question有用。

09-17 15:16