[英]Set value of $scope variable from jQuery
我想從jQuery函數中為$ scope中的變量設置一個值,如下代碼。 一切都很好,但是新的價值體現在UI中。
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確實提供了一種內置方法來監聽click
事件,稱為ng-click
。 這是它的文檔: AngularJS:ngClick
Angular JS提供ng-click
指令來處理點擊事件。只需在您的HTML元素中添加ng-click=function_name()
作為屬性.ng ng-click
指令告訴AngularJS當單擊HTML元素時該怎么做。
例
angular.module('myApp', []) .controller('myCtrl',function($scope) { $scope.myFunc = function() { console.log('clicked'); }; });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-app="myApp"> <div ng-controller="myCtrl"> <button ng-click="myFunc()">Click</button> </div>
我不確定,為什么不使用標准的ng-click
捕獲click事件。 請說明您是否有特定原因。 但是,如果您仍然想遵循Jquery的方式,則應在更改值后立即調用角度摘要循環。 使用$scope.$apply()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.