【问题标题】:What is the difference between set value directly to $scope and via jquery value?直接将值设置为 $scope 和通过 jquery 值有什么区别?
【发布时间】:2016-02-17 12:34:47
【问题描述】:

在这里,我创建了工作正常的示例文本框值绑定。如果我直接在文本框 0、1、2、3 中输入值,它将更新该值。如果我点击了我在函数中更新了文本框模型,我创建了一个提交按钮

喜欢这个

$scope.testing=function() {
    $scope.selected = 0;
}

到时候更新就好了。

但是通过 jquery 值尝试了相同的尝试,但那一次它失败了,我可能知道它无法更新的原因。文本框值更改但模型中不更新

$scope.testing=function() {
    $('#tabId').val(3);
}

Sample here

【问题讨论】:

  • 为什么要从jQuery 更新它?它失败了,因为您正在更新 value 属性而不是绑定到该 DOM 的范围变量。虽然您可以通过让 $scope.testing=function(){$('#tabId').scope().selected = 0;} 也将 jQuery 移动到角度 this plunkr 来修复它
  • 因为不在 angular 范围内并且 angular 不会得到通知,为此您必须使用 $apply 方法运行摘要循环。

标签: jquery angularjs angularjs-scope


【解决方案1】:

问题是 Angular 不知道 jquery 插件所做的更新,因此如果您使用 Jquery 更新任何值并且还希望更新模型,那么您将不得不为此添加代码。它不会自动发生。

在你的情况下,你将不得不修改

$scope.testing=function()
  {
    $('#tabId').val(3);
  }

$scope.testing=function()
  {
    $('#tabId').val(3);
    $scope.selected = 3;
  }

Model not updating 中提出了类似的问题。

您也可以参考这个链接How to update model

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2011-09-10
    • 2019-02-04
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多