Solved

Passing variable to function in Angular JS

Posted on 2014-10-15
2
209 Views
Last Modified: 2014-11-06
I want to call a function in the controller file that should in turn call the API and delete a post

If I replace the bold bit in the code '{{user.id}}' with a static number, it works fine - when I try different ways of including it - any of these below, I get errors, most of the time it just passed the code as text

ng-click="deleteUser('{{user.id}}')"

Gives me a source as =
<button class="btn btn-small btn-purple" ng-click="deleteUser('580')" style="margin:0 0 2px 0; font-weight:bold;">DELETE</button>

And that should work as this static code
ng-click="deleteUser('580')"

Works fine


HTML:
<button class="btn btn-small btn-purple" ng-click="deleteUser('{{user.id}}')" style="margin:0 0 2px 0; font-weight:bold;">DELETE</button>

controller.js:
$scope.deleteUser = function(userId) {
			$http({
		    method: 'DELETE',
		    url: '/user/delete/' + userId,
		    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
		    transformRequest: function(obj) {
		        var str = [];
		        for(var p in obj)
		        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
		        return str.join("&");
		    }
		})
		.success(function () {
			refreshUserList();
		})
		
		.error(function() {
		});

Open in new window




What can be wrong, for some reason when I'm entering the dynamic variable, even though the source is fine, identical to the static working source, when debugging I'm receiving this

curl 'http://URL:8080/user/delete/%7B%7Buser.id%7D%7D' -X DELETE -H 'Host: URL:8080' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Referer: http://URL:8080/admin/viewCustomers.php' -H 'Cookie: JSESSIONID=8144C37C60F584EBBEB9EC5131F0301D'

curl 'http://URL:8080/user/delete/%7B%7Buser.id%7D%7D' - as you can see it distorts it - not when I'm sending static, but only when the dynamic is passed - even though the source says the same... very confused.
0
Comment
Question by:DanteAdmin
  • 2
2 Comments
 
LVL 82

Accepted Solution

by:
leakim971 earned 500 total points
ID: 40381856
simply use : ng-click="deleteUser(user.id)"
Test page : http://jsfiddle.net/6d0y9d3h/
https://docs.angularjs.org/api/ng/directive/ngClick
0
 
LVL 82

Expert Comment

by:leakim971
ID: 40426331
<div ng-app="myApp" ng-controller="myCtrl">
    <button class="btn btn-small btn-purple" ng-click="deleteUser(user.id)" style="margin:0 0 2px 0; font-weight:bold;">DELETE</button>
</div>

Open in new window


var myApp = angular.module("myApp", []);
var myCtrl = myApp.controller("myCtrl", function($scope,$http) {
    $scope.user = {
        id: 580
    };

    $scope.deleteUser = function(userId) {
        alert(userId);
			$http({
		    method: 'DELETE',
		    url: '/user/delete/' + userId,
		    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
		    transformRequest: function(obj) {
		        var str = [];
		        for(var p in obj)
		        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
		        return str.join("&");
		    }
		})
		.success(function () {
			refreshUserList();
		})
		
		.error(function() {
		});
    };
});

Open in new window

0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Preface This is the third article about the EE Collaborative Login Project. A Better Website Login System (http://www.experts-exchange.com/A_2902.html) introduces the Login System and shows how to implement a login page. The EE Collaborative Logi…
Introduction Knockoutjs (Knockout) is a JavaScript framework (Model View ViewModel or MVVM framework).   The main ideology behind Knockout is to control from JavaScript how a page looks whilst creating an engaging user experience in the least …
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will receive an overview of the basics of CSS showing inline styles. In the head tags set up your style tags: (CODE) Reference the nav tag and set your properties.: (CODE) Set the reference for the UL element and styles for it to ensu…

831 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question