从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()