簡體   English   中英

從jQuery設置$ scope變量的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM