AngularJS - Передача данных между страницами
Я стартер AngularJS. Я пытаюсь отправить данные из:
Когда пользователь нажимает ссылку обновления для фургона, я вызываю контроллер и извлекаю данные о фургоне в контроллере. Но я не могу назначить детали фургона на странице 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.
Ответы
Ответ 1
Вам необходимо создать службу для обмена данными между контроллерами.
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 в контроллеры, передав его как параметр.
Ответ 2
Если вам нужно только обмениваться данными между представлениями/областями/контроллерами, проще всего сохранить их в $rootScope. Однако, если вам нужна общая функция, лучше определить службу для этого.
Ответ 3
Что вам нужно сделать, так это создать службу для обмена данными между контроллерами.
Хороший учебник https://www.youtube.com/watch?v=HXpHV5gWgyk
Ответ 4
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');