У меня есть пример простого книжного магазина, который я работаю для angularjs, и я пытаюсь передать идентификатор книги с домашней страницы в службу на странице редактирования, чтобы детали книги могут быть представлены. То, что я произошло, это то, что я вижу, как остальные звонки удаляются из моей загрузки, когда другая страница вызывает службу останова. Порядок Я ожидаю это:Angularjs передают данные между службами, которые существуют на разных страницах
1) User enters a book ID to edit
2) User presses Search button
3) book.html page is loaded
4) BookEdit service is invoked with ID from Steps 1 and 2
5) ng-model for book loads data.
Извинения заранее, могут быть некоторые ошибки, как я модифицируя этот код с другого компьютера, поэтому я не мог копировать/вставить
код ниже:
home.html
<div ng-controller="HomeCtrl">
<div>
<label for="query">Book to edit</label>
<input id="query" ng-model ="editBook.query">
<button ng-click="loadBookById()">Search</button>
</div>
</div>
home.js:
var homeApp = angular.module('bookHome',['bookEdit']);
homeApp.controller('HomeCtrl',function($scope,$http,bookEditService)
{
$http.get('http://get/your/books/rest').success(function(data){
$scope.library = data;
});
$scope.editBook = {
query: '',
service:'bookEditService'
} ;
$scope.loadBookById = function()
{
$scope.$emit('loadBookById',{
query:$scope.editBook.query,
$service: $scope.editBook .service
}
$scope.$on('loadBookById', function(ev,search){
bookEditService.loadBook({
bookId: $scope.editBook.query
},
$scope.searchComplete,
$scope.errorSearching
);
});
$scope.searchComplete = function(results) {
$scope.results = results;
};
$scope.errorSearch= function(data,status,headers,config){
console.log(data);
// ...
};
}
book.html
<div ng-controller="BookCtrl" >
<div ng-model="details.title"></div>
<div ng-model="details.author"></div>
</div>
bookEdit.js
var bookEditApp = angular.module('bookEdit',[]);
bookEditApp.service('loadBook',function($http){
return{
loadBookById: function(params,success,error){
$http({
url: 'http://path/to/book/editing',
method: 'GET',
params:{bookId: params.bookId}).success(function(data,status,headers,config)
{
var results = data;
success(results || []);
}).error(function(){
error(arguments);
});
}
};
});
bookEditApp.controller('BookCtrl',function($scope){
$scope.details = {
title: "",
author: ""
};
});
почему вы не можете использовать путь по маршруту с routeParam ': bookId' и сделать звонок отдых в' resolve' маршрутной конфигурации для страницы temp поздно вы хотите загрузить? – charlietfl
@charlietfl Я полагаю, что могу, у вас есть код, который вы можете поделиться? – Woot4Moo
как для основ routeParams ... [это видео] (http://egghead.io/lessons/angularjs-routeparams) (все видео на этом сайте) хорошая стартовая точка. Так что это учебник на сайте docs – charlietfl