[英]Adding parameters to ng-click in Angular JS
My code is something like this 我的代码是这样的
<div ng-app="myApp" ng-controller="myCtrl">
<button ng-click="get_user_detail(Andrew)">
</button>
<button ng-click="get_user_detail(Andrew1)">
</button>
</div>
var app = angular.module("myApp", []);
app.controller("myCtrl", ['$compile', '$http', '$scope', function ($compile, $http, $scope) {
$scope.get_user_detail=function(name){
var response = $http.get("myURL", {
params: {user_id:12345,name:name}
});
response.success();
response.error();
}
}]);
While I was working with one parameter user_id,it was working fine,parameters were passed properly to request.After I added 2nd parameter name,it is not getting passed in params. 当我使用一个参数user_id时,它工作正常,参数已正确传递给请求。添加第二个参数名称后,未在参数中传递它。
Andrew is not a variable of your $scope
. 安德鲁不是$scope
的变量。
So when you do get_user_detail(Andrew)
, the value of Andrew
is undefined . 所以,当你做get_user_detail(Andrew)
,价值Andrew
是不确定的 。
I guess you would like to pass it as a static value (string), put your value between quotes ' '
: 我猜您想将其作为静态值 (字符串)传递,将您的值放在引号' '
之间:
<button ng-click="get_user_detail('Andrew')">
As in the other answers, your code should work as long as you add " "
to the strings you intend to pass as params. 与其他答案一样,只要在要作为参数传递的字符串中添加" "
,您的代码就可以正常工作。
var app = angular.module('ngApp', []); app.controller("myCtrl", ['$compile', '$http', '$scope', function ($compile, $http, $scope) { $scope.get_user_detail = function(name){ $scope.name = name // response = $http.get("myURL", { // params: {user_id:12345,name:name} // }); // response.success(); // response.error(); } }]);
<div ng-app="ngApp" ng-controller="myCtrl"> You clicked {{name}} <br/> <button ng-click="get_user_detail('Andrew')"> Andrew </button> <button ng-click="get_user_detail('Bob')"> Bob </button> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script> <script src="app.js"></script> </div>
I commented the $http
call for obvious reasons. 由于明显的原因,我评论了$http
调用。 Hope it helps. 希望能帮助到你。
You must have string in ng-click in ' ': 您必须在ng中输入字符串,然后单击“”:
<button ng-click="get_user_detail('Andrew')">
and in js code - name put in ' ' 并在js代码中-放在''中的名称
params: {user_id:12345,'name':name}
I thought you not define variables in controller, define variable with $scope 我以为您没有在控制器中定义变量,而是用$ scope定义了变量
<div ng-app="myApp" ng-controller="myCtrl">
<button ng-click="get_user_detail(Andrew)">
</button>
<button ng-click="get_user_detail(Andrew1)">
</button>
</div>
Controller Code 控制器代码
var app = angular.module("myApp", []);
app.controller("myCtrl", ['$compile', '$http', '$scope', function ($compile, $http, $scope) {
$scope.Andrew = 'John';
$scope.Andrew = 'Jam';
$scope.get_user_detail=function(name){
var response = $http.get("myURL", {
params: {user_id:12345,name:name}
});
response.success();
response.error();
}
}]);
Other soluation you can direct pass string without define variable 您可以直接传递字符串的其他解决方案而无需定义变量
<div ng-app="myApp" ng-controller="myCtrl">
<button ng-click="get_user_detail('Andrew')">
</button>
<button ng-click="get_user_detail('Andrew1')">
</button>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.