Angular:将对象传递到同一控制器中的不同视图

时间:2016-08-02 13:23:09

标签: javascript html angularjs ionic-framework ionic-view

我正在开发一个Ionic应用程序,我需要将一个项目(json对象)传递给视图并将项目绑定在那里。

我经历了很多类似的问题,可能是:

Unable to access $scope variable within same controller

AngularJS: Pass an object into a state using ui-router

但是,似乎没有人在我的情况下工作。

这是我的index.html页面的HTML标记(我从那里传递item):

<div class="list card slide-in" ng-repeat="item in posts track by $index">
    <h2 ng-bind="item.title" class="assertive"></h2>
    //comes inside ng-repeat loop; I'm passing the whole json object as parameter to next view
    <button class="button button-full" ng-click="getPostDetail(item);"> Read More </button>
</div>

posts.html页面的Html标记(我需要访问item的位置):

<ion-view view-title="Read More ">
    <ion-content class="card-background-page ">
        <div class="list padding-20">
            <h2 ng-bind="selectedPost.title" class="assertive"></h2>
        </div>
    </ion-content>
</ion-view>

我的配置:

app.config(function ($stateProvider, $urlRouterProvider, localStorageServiceProvider) {
$stateProvider
.state('tabs.posts', {
  url: "/posts",
  params: {
      obj: null // as per other suggestion, added a param here
  },
  views: {
      'home-tab': {
          templateUrl: "templates/post.html",
          controller: 'main'
      }
  }
})

我的控制器:

app.controller('main', function ($scope, $http, $state, $ionicModal, $location, $stateParams, localStorageService) {
    $scope.getPostDetail = function (data) {
        var selectedPost = data;
        $state.go("tabs.posts", { obj:  selectedPost });
    }

})

单击按钮,“帖子视图”会成功加载,但不会绑定任何内容,即视图为空白

1 个答案:

答案 0 :(得分:0)

除非我遗漏某些内容,否则selectedPost需要$scope。否则无法从视图中访问它。就像这样。

    $scope.getPostDetail = function (data) {
        $scope.selectedPost = data;
        $state.go("tabs.posts", { obj:  selectedPost });
    }