ng-click:在pagesjs页面之间传递selectedItem数据

时间:2016-04-05 14:30:21

标签: javascript angularjs

所以,我能够选择列表中的项目,但目的是在我点击它时将所选列表的数据传递到另一个/路由中。我需要一些帮助,因为我真的不知道如何继续。如果你知道punker的例子,请不要犹豫告诉我:)。

Bellow是我的选项促销控件

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是我的数据列表

<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>

贝娄是我的建议。杰森

[{ "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" }]

3 个答案:

答案 0 :(得分:2)

我认为您可以使用提供商'$ rootScope'。

$rootScope.selected = suggestion;

您可以在其他控制器中访问此数据。

希望它有所帮助。

答案 1 :(得分:1)

我有两点建议:

  • 您可以使用提供商&#39; $ rootScope&#39;。

      

    $ rootScope.selected = suggestion;

  • 或者通过提供商获取param&#39; $ route&#39;。

      

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

答案 2 :(得分:0)

您可以使用服务或工厂在控制器之间共享数据,我使用您的代码创建一个工厂并在控件上调用它来使用。

    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;
    });