2017-03-06 94 views
2

我想從jQuery函數中爲$ scope中的變量設置一個值,如下面的代碼所示。一切都很好,但新的價值體現在UI中。

app.controller('myCtrl', function($scope) { 
    $scope.carname = "Volvo"; 

    $('#sample').click(function(e){ 
     $scope.carname = "Audi"; 
    }); 
}); 

這裏是我完整的程序:Link

我會很高興,如果有人幫助我。

+3

爲什麼不使用'ng-click'處理程序 –

回答

3

爲了使你的代碼工作,你需要運行$scope.$digest()分配$scope.carname = "Audi";

篩選後:

app.controller('myCtrl', function($scope) { 
    $scope.carname = "Volvo"; 

    $('#sample').click(function(e){ 
     $scope.carname = "Audi"; 
     $scope.$digest(); 
    }); 
}); 

這裏是一個W3Schools的鏈接程序:Link

如在下面的評論中提到,你也可以使用$scope.$apply()類似如下:

app.controller('myCtrl', function($scope) { 
    $scope.carname = "Volvo"; 

    $('#sample').click(function(e){ 
     $scope.$apply(function() { 
      $scope.carname = "Audi"; 
     }); 
    }); 
}); 

這裏是一個W3Schools的鏈接程序:Link

您可以在以下鏈接閱讀更多關於$scope.$digest()$scope.$apply()的使用案例:

注:正如在許多其他意見&一些答案中提到,角並提供了內置的方法來偵聽click事件,被稱爲ng-click。這裏是它的文檔:AngularJS: ngClick

+1

這比我的更正確+ 1 –

+0

更好地調用$ scope。$ apply()我會說(https://www.sitepoint.com/理解angulars-apply-digest /) –

+1

請不僅回答他的問題,但藐視他使用'.click'處理程序而不是'ng-click' – devqon

1

角JS提供ng-click指令來處理單擊event.Just添加ng-click=function_name()在你的HTML element.The 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>

0

我不確定,爲什麼你不使用標準ng-click來捕捉點擊事件。請解釋一下,如果你有具體的原因。但是如果你仍然想遵循Jquery的方式,只要你改變了值,你就應該調用角度摘要循環。使用$scope.$apply()