2016-04-05 3 views
1

So konnte ich die Items meiner Liste auswählen, aber das Ziel ist, die Daten der ausgewählten Liste in einer anderen/Route zu übergeben, wenn ich darauf klicke. Ich würde ein wenig Hilfe brauchen, weil ich nicht wirklich weiß, wie man bitte vorgeht. Wenn Sie punker Beispiele kennen, zögern Sie nicht, mir zu sagen :)ng-click: pass data selectedItem zwischen Seiten angularjs

Bellow mein optionSuggestionController ist

app.controller('optionSuggestionController', ['$scope', '$http', function($scope, $http) { 

    $http.get('suggestions.json') 
     .then(function(res){ 
      $scope.suggestions = res.data;     
     }); 

    $scope.setMaster = function(suggestion) { 
     $scope.selected = suggestion; 
    } 

    $scope.isSelected = function(suggestion) { 
     return $scope.selected === suggestion; 
    } 
}]) 

Bellow ist meine Liste der Daten

<ul class="list-holder"> 
    <li ng-repeat="suggestion in suggestions" ng-class="{active : isSelected(suggestion)}"> 
     <a ng-click="setMaster(suggestion)">{{suggestion.fromto}}</a> 
    </li> 
</ul> 

Bellow ist meine Vorschläge .json

[{ "fromto": "Dublin to London", "img": "http://placekitten.com/100/100" }, 
    { "fromto": "Dublin to Paris", "img": "http://placekitten.com/100/100" }, 
    { "fromto": "Dublin to Mexico", "img": "http://placekitten.com/100/100" }] 
+0

Wir müssen wissen, was das 'sugestion' Objekt aussieht, aber ich denke, wenn Sie einen state-Dienst verwenden, um Ihnen den gleichen Service zwischen zwei Controllern Zugang gemeinsam nutzen können und dann th geklickt suggestion über den stateService :) – MoshMage

Antwort

0

Sie können Service oder Factory verwenden, um Ihre Daten zwischen den Controllern zu teilen. Ich erstelle eine Factory mit Ihren Codes und rufe sie auf einem Steuerelement zur Verwendung auf.

app.controller('optionSuggestionController', function ($scope, $filter, $timeout, $timeout, $http, testFactory) { 

      testFactory.get(function (resp) { 
       console.log(resp); 
       $scope.suggestions = resp; 
      }); 
    }); 


    app.factory('testFactory', function ($http) { 
     var databaseFactory = {}; 
     databaseFactory.get = function (callback) { 

      return $http.get('suggestions.json').then(function (response) { 
       databaseFactory.returnedData = response.data; 
       callback(databaseFactory.returnedData); 
      }); 
     } 
     return databaseFactory; 
    }); 
+0

Danke @Amir, genau was ich gebraucht habe, werde ich daran arbeiten – maevy

2

Ich denke, Sie können den Anbieter '$ rootScope' verwenden.

$rootScope.selected = suggestion; 

Sie können auf diese Daten in einem anderen Controller zugreifen.

Ich hoffe, es hilft.

1

Ich habe zwei Vorschläge:

  • Sie können den Provider '$ rootScope' verwenden.

    $ rootScope.selected = Vorschlag;

  • Oder param via URL vom Provider '$ route' erhalten.

    var suggestion = $ route.current.params.suggestion;

Verwandte Themen