从jQuery设置$ scope变量的值

我想从jQuery函数中为$ scope中的变量设置一个值,如下面的代码所示。 一切都很好,但新的价值反映在用户界面。

app.controller('myCtrl', function($scope) { $scope.carname = "Volvo"; $('#sample').click(function(e){ $scope.carname = "Audi"; }); }); 

这是我的完整计划: 链接

如果有人帮我这个,我会很高兴的。

为了使你的代码有效,你需要在分配$scope.carname = "Audi";之后运行$scope.$digest() $scope.carname = "Audi";

像这样:

 app.controller('myCtrl', function($scope) { $scope.carname = "Volvo"; $('#sample').click(function(e){ $scope.carname = "Audi"; $scope.$digest(); }); }); 

这是w3schools链接到该程序: 链接

如下面的评论中所述,您还可以使用$scope.$apply() ,如下所示:

 app.controller('myCtrl', function($scope) { $scope.carname = "Volvo"; $('#sample').click(function(e){ $scope.$apply( function() { $scope.carname = "Audi"; }); }); }); 

这是w3schools链接到该程序: 链接

您可以在以下链接中阅读有关$scope.$digest()$scope.$apply()的用例的更多信息:

  • 理解Angular的$ apply()和$ digest()
  • AngularJS $ watch(),$ digest()和$ apply()

注意:正如许多其他评论和一些答案中所提到的,Angular确实提供了一种内置方法来监听click事件,称为ng-click 。 以下是它的文档: AngularJS:ngClick

Angular JS提供了ng-click指令来处理click事件。只需在HTML元素中添加ng-click=function_name()作为属性.ng ng-click指令告诉AngularJS ng-click HTML元素时该怎么做。

 angular.module('myApp', []) .controller('myCtrl',function($scope) { $scope.myFunc = function() { console.log('clicked'); }; }); 
   

我不确定,为什么不使用标准的ng-click来捕获click事件。 如果您有具体原因,请解释一下。 但是如果您仍然想要遵循Jquery方式,则应在更改值时调用角度摘要周期。 使用$scope.$apply()