Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接将值设置为$scope和通过jquery值之间有什么区别?_Jquery_Angularjs_Angularjs Scope - Fatal编程技术网

直接将值设置为$scope和通过jquery值之间有什么区别?

直接将值设置为$scope和通过jquery值之间有什么区别?,jquery,angularjs,angularjs-scope,Jquery,Angularjs,Angularjs Scope,在这里,我创建了示例文本框值绑定,它工作得很好。如果我直接在文本框0,1,2,3中输入值,它将更新值。如果单击函数中的“我更新了文本框模型”,则创建了一个提交按钮 像这样 $scope.testing=function() { $scope.selected = 0; } 那次很好 但通过jquery值尝试了相同的方法,但那个次失败了,我想知道它无法更新的原因。模型中的文本框值更改但不更新 $scope.testing=function() { $('#tabId').val(

在这里,我创建了示例文本框值绑定,它工作得很好。如果我直接在文本框0,1,2,3中输入值,它将更新值。如果单击函数中的“我更新了文本框模型”,则创建了一个提交按钮

像这样

$scope.testing=function() {
    $scope.selected = 0;
}
那次很好

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

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

问题是angular不知道jquery插件所做的更新,因此如果您使用jquery更新任何值,并且还希望更新模型,则必须为此添加代码。这不是自动的

在您的情况下,您必须修改

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

类似的问题也被问到了

您也可以参考此链接


希望这对您有所帮助。

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