2014-11-23 3 views
0

Я делаю прямую поисковую систему. Получите данные от Google Api. Мое первое представление - это домашняя страница, и вот только результаты поиска и списка результатов. В моем двух представлениях есть игрок.Поисковая система в AngularJS

Мой поставщик маршрут:

$routeProvider. 
    when('/home', { 
     templateUrl: 'view/home.html', 
     controller: 'ZippyListCtrl' 
    }). 
    when('/mp3/:wwwId/:zippyId', { 
     templateUrl: 'view/mp3.html', 
     controller: 'Mp3DetailCtrl' 
    }). 
    otherwise({ 
     redirectTo: '/home' 
    }); 
}]) 

Мои контроллеры:

zippycatControllers.controller('ZippyListCtrl', ['$scope', '$http', function($scope, $http) { 
$scope.dane = {}; 
$scope.ladowanie = 0; 
var url = "http://ajax.googleapis.com/ajax/services/search/web?callback=JSON_CALLBACK"; 
$scope.search = function() { 
    if ($scope.dane) { 
     $scope.ladowanie = 1; 
     $http({ 
      url: url, 
      params: {q: $scope.dane.q, "start": 0, v: "1.0", rsz: "large", "pws": 0}, 
      method: 'JSONP' 
     }).success(function (responseData) { 
      //console.log(responseData); 
      $scope.ladowanie = 0; 
      $scope.message = responseData; 
     }) 
    } 
}}]); 

и:

zippycatControllers.controller('Mp3DetailCtrl', ['$scope', '$routeParams', '$sce', function($scope, $routeParams, $sce) { 
$scope.player = $sce.trustAsHtml(
    'code player');}]); 

Мой вопрос: как искать на двух зрения?

+0

Что означает 'поиск на двух взглядах'? – charlietfl

+0

Извините, как его улучшить, чтобы найти работу на втором экране? – Garsi

+1

Если вы хотите использовать его в нескольких местах, создайте для него директиву – charlietfl

ответ

1

Для различных действий на разных страницах вы можете создать завод, целью которого является получение данных и выполнение переданной ему функции обратного вызова.

.factory('getResults', ['$http', function($http) {  
    return function(requestObj, callBackFunc){ 
     var url = "http://ajax.googleapis.com/ajax/services/search/web?callback=JSON_CALLBACK"; 
     $http({ 
      url: url, 
      params: {q: requestObj.q, "start": 0, v: "1.0", rsz: "large", "pws": 0},//setting to be done based on requestObj params, 
      method: 'JSONP' 
     }).success(function (responseData) { 
      callBackFunc(responseData); 
     }) 
    } 
}]) 

Теперь, когда вы вызываете его из дома контроллера, вы можете использовать:

getResults($scope.dane, function(resonseData){ 
      $scope.messageObj.ladowanie = 0; 
      $scope.messageObj.message = responseData; 
}); 

в то время как в другом окне вы можете использовать:

getResults($scope.dane, function(resonseData){ 
      $scope.messageObj.ladowanie = 0; 
      $scope.messageObj.message = responseData; 
      //redirection to home page. 
}); 

Здесь messageObj должны быть в основном контроллер (средство прикрепляется к элементу html, содержащему представления, обычно это контроллер уровня тела), так что он доступен как в представлении, так и в обоих представлениях просто меняет атрибуты, поэтому основной объект и не копия меняется. В вашем коде $ scope.message отличается для разных контроллеров, поскольку он создает отдельную копию для каждого контроллера. Теперь, когда вы перенаправляетесь на домашнюю страницу, у вас уже есть список результатов поиска, поэтому вы можете просто заполнить его.

Надеюсь, что это поможет ...

Смежные вопросы