Friday, 30 December 2016

javascript - Can you pass parameters to an AngularJS controller on creation?



I have a controller responsible for communicating with an API to update properties of a user, name, email, etc. Each user has an 'id' which is passed from the server when the profile page is viewed.



I would like to pass this value to the AngularJS controller so it knows what the API entry point is for the current user. I've tried passing the value in ng-controller. For example:



function UserCtrl(id, $scope, $filter) {


$scope.connection = $resource('api.com/user/' + id)


and in the HTML






where {% id %} print the id sent from the server. but I get errors.




What is the correct way to pass a value into a controller on its creation?


Answer



Notes:



This answer is old. This is just a proof of concept on how the desired outcome can be achieved. However, it may not be the best solution as per some comments below. I don't have any documentation to support or reject the following approach. Please refer to some of the comments below for further discussion on this topic.



Original Answer:



I answered this to
Yes you absolutely can do so using ng-init and a simple init function.




Here is the example of it on plunker



HTML











I am {{name}} {{id}}






JavaScript



var app = angular.module('angularjs-starter', []);


app.controller('MainCtrl', function($scope) {

$scope.init = function(name, id)
{
//This function is sort of private constructor for controller
$scope.id = id;
$scope.name = name;
//Based on passed argument you can make a call to resource
//and initialize more objects

//$resource.getMeBond(007)
};


});

No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...