AngularJS-передача данных между страницами



Я стартер AngularJS. Я пытаюсь отправить данные из :





  • страница A: Ван листинг страница



    до



  • страница B: страница обновления фургона.


когда пользователь нажимает ссылку обновления для фургона, я вызываю контроллер и извлекаю детали фургона в контроллере. Но я не могу назначить детали фургона на страницу B (страница обновления фургона) с помощью того же контроллера... Ошибка "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.
470   4  

4 ответов:

нужно создать службу, чтобы иметь возможность обмениваться данными между контроллерами.

app.factory('myService', function() {
 var savedData = {}
 function set(data) {
   savedData = data;
 }
 function get() {
  return savedData;
 }

 return {
  set: set,
  get: get
 }

});

в вашем контроллере A:

myService.set(yourSharedData);

в вашем контроллере B:

$scope.desiredLocation = myService.get();

не забудьте ввести myService в контроллеры, передав его в качестве параметра.

Если вам нужно только обмениваться данными между представлениями/областями / контроллерами, самый простой способ-сохранить его в $rootScope. Однако, если вам нужна общая функция, лучше определить службу для этого.

Что вы должны сделать, это создать сервис для обмена данными между контроллерами.

хороший учебник https://www.youtube.com/watch?v=HXpHV5gWgyk

app.factory('persistObject', function () {

        var persistObject = [];

        function set(objectName, data) {
            persistObject[objectName] = data;
        }
        function get(objectName) {
            return persistObject[objectName];
        }

        return {
            set: set,
            get: get
        }
    });

заполните его такими данными

persistObject.set('objectName', data); 

получить данные объекта, как это

persistObject.get('objectName'); 

Comments

    Ничего не найдено.