I am an AngularJS starter. I am trying to send data from :
Page A : Van Listing page
to
Page B: Van Update page.
When user click the update link for a van, I am invoking a controller and retrieving the van details in the controller. But, I cannot assign the van details to the Page B ( Van Update Page) using the same controller... Error "Cannot set property 'vanNumber' of undefined"
*** Page A: Van List **** <form name="listVanForm" > <table> <tr> <td ng-controller="VanUpdateCtrl"><a href="#/van-update" ng-click="prePopulateForm(row.members.vanNumber.value )" class="btn btn-small btn-primary">update</a></td> </tr> </table> </form> *** Page B: Van Update **** <div class="container"> <h2>Edit Van </h2> <form name="updateVanForm" novalidate="novalidate" class="form-horizontal" ng-submit="updateCard(formData)"> <div class="control-group"> <label class="control-label" >Van Number:</label> <div class="controls"> <input type="text" id="vanNumber" ng-model="formData.vanNumber" placeholder=""/> </div> </div> </form> </div> *** VanUpdateCtrl ** app.controller('VanUpdateCtrl', ['$scope', 'VanUpdateFactory', '$location', function ($scope, VanUpdateFactory, $location) { //callback for ng-init 'populateDD': $scope.prePopulateForm = function (cardNoParam m) { alert('cardNo = '+cardNoParam); $scope.formData.cardNumber=cardNoParam;} } So, $scope.formData.cardNumber OR $scope.formData in the destination page is not recognised.
You can download it from Google.com. Step 2 - Create angular module and inject ui-router in this module. Create controller for Index. html page where I kept pages name and some value that I want to pass through url from Index page to respective pages.
Approach: To share data between the controllers in AngularJS we have two main cases: Share data between parent and child: Here, the sharing of data can be done simply by using controller inheritance as the scope of a child controller inherits from the scope of the parent controller.
You need to create a service to be able to share data between controllers.
app.factory('myService', function() { var savedData = {} function set(data) { savedData = data; } function get() { return savedData; } return { set: set, get: get } });
In your controller A:
myService.set(yourSharedData);
In your controller B:
$scope.desiredLocation = myService.get();
Remember to inject myService in the controllers by passing it as a parameter.
What you should do is create a service to share data between controllers.
Nice tutorial https://www.youtube.com/watch?v=HXpHV5gWgyk
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With