以编程方式更改模型时 ngChange 不起作用?



它在文档中说ngChange不会触发:"如果模型以编程方式更改,而不是通过更改输入值"。

这是否意味着如果您编程方式更改模型,则无法使用ngChange

或者这是否意味着在以下情况下无法使用ngChange

1( 以编程方式更改模型

2( 您无法通过输入字段更改模型

这只是意味着如果使用javascript来更改模型,则不会计算ngChange表达式。如果要触发 ngChange,则需要以编程方式调用类似于以下内容的表达式:

<input type="checkbox" ng-model="confirmed" ng-change="change()" id="ng-change-example1" />

如果您希望更改函数触发,则需要手动调用它:

$scope.confirmed = 'test';
$scope.change();

如果我正确阅读并理解了这一点,不幸的是,你不能像你说的那样使用 ng-change 来做到这一点,但我不是 100% 确定。

我正在考虑ng-model-options,这是AngularJS 1.3附带的新功能,也许这可以推动你前进。

有一个用于吸气剂和二传手的自动选项,允许您实时更改模型。从理论上讲,您可以使用它并使用ng-bind调用更新函数。

也许这可能是您解决问题的可能解决方案......

(function(angular) {
  'use strict';
angular.module('getterSetterExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    var _name = 'Brian';
    $scope.user = {
      name: function(newName) {
        return angular.isDefined(newName) ? (_name = newName) : _name;
      }
    };
  }]);
})(window.angular);
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-ngModelOptions-directive-getter-setter-production</title>
  
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.7/angular.min.js"></script>
  <script src="app.js"></script>
  
  
</head>
<body ng-app="getterSetterExample">
  <div ng-controller="ExampleController">
  <form name="userForm">
    Name:
    <input type="text" name="userName"
           ng-model="user.name"
           ng-model-options="{ getterSetter: true }" />
  </form>
  <pre>user.name = <span ng-bind="user.name()"></span></pre>
</div>
</body>
</html>

相关内容

  • 没有找到相关文章

最新更新