【问题标题】:Angular model doesn't update when changing input programmatically以编程方式更改输入时,角度模型不会更新
【发布时间】:2016-06-12 18:49:10
【问题描述】:

我有一个绑定到模型值的文本输入,但我不知道如何以编程方式更改输入值并将更改传播到模型。

我明白,因为我正在更新我需要显式调用 $scope.$apply() 的角度范围外部的值,但它不起作用。

HTML:

<input id="test_input" ng-model="test_value">

控制器:

$scope.test_value = 'abc'; // starting value

控制台:

$('#test_input').val('xyz');
$('#test_input').scope().$apply();
$('#test_input').scope().test_value;
-> 'abc';

【问题讨论】:

  • 为什么不直接使用控制台更改 $scope.test_value 的值,而是使用 jquery 来更改?
  • @RahulArora - 这是演示代码。我有一个应用程序,其中输入元素正在以编程方式更新,我希望模型注册它。
  • 检查我的答案@Yarin

标签: javascript angularjs


【解决方案1】:

ngModel 监听“输入”事件,所以需要在设置好值后触发该事件:

$('#test_input').val('xyz');
$('#test_input').trigger('input'); 
$('#test_input').scope().test_value;

【讨论】:

  • 旁注:使用trigger时不需要$apply()调用,并且必须在Angular之前包含jQuery才能使其工作:jsfiddle.net/xj9rysy6
  • 如果我正在处理“输入”事件怎么办?不会再次触发输入导致无限循环吗?
  • 那么你不需要触发它,你只需要调用scope() for angular来消化它
猜你喜欢
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
  • 2015-02-16
  • 2018-06-20
相关资源
最近更新 更多