2017-03-06 95 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()