[android]具体掌握控制不在新的一页中显示内容

发布时间: 2017/3/17 20:35:57
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在通过单击主详细信息导航 buttonview 从给定的数据的详细信息

page1.html

<a class="button icon button-block button-calm icon-right ion-android-arrow-dropright-circle" ng-class="{'button-balanced': file.status == 'open', 'button-assertive': file.status == 'closed'}" href="#filedetails" ng-repeat="file in file | orderBy:'-status'" ng-click="onSelectFile(n)" >File Ref No:{{file.num}}<br>
        Description:{{file.descript}}<br>
        Status:{{file.status}}</a><br>

page2.html

<div class="col">: {{file.num}}</div>
      <div class="col">: {{file.casedet}}</div>

controllerpage

.controller('caseFileCtrl', function($scope,$http,$location) {
     $scope.file=[
        {num:"1",descript:"consumer",status:"closed",casedet:"cleared"},
        {num:"2",descript:"literal",status:"open", casedet:"process"},
        {num:"3",descript:"literal",status:"closed", casedet:"cleared"},
        {num:"4",descript:"consumer",status:"open",casedet:"proess"}
                 ];
$scope.onSelectFile = function(n)
{
    $location.url('/casefile/'+ n.num);
}



 })

  .controller('fileDetailsCtrl', function($scope,$stateParams) {
    $scope.file={num:$stateParams.num, casedet:'file'+$stateParams.casedet};

  })

我不能对 view num 和 casedet 在其他页

在此先感谢

解决方法 1:

您可以使用 service 控制器之间共享数据。

js/services.js

angular.module('starter.services', [])

.factory('File', function($log) {
    this.files = [];
    return {
        /**
         * Get the list of files.
         * @returns Returns the list of files.
         */
        get: function(){
            return this.files;
        },
        /**
         * Set the list of files.
         * @param files The files to set.
         */
        set: function(files){
            this.files = files;
        }
    };
});

包括在你 index.html :

<!-- Your scripts -->
<script src="js/services.js"></script>

包括在你 app.js 依赖项︰

angular.module('yourModuleName', [/* Your dependencies */, 'starter.services'])

Config部分的你app.js

.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

    .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/menu.html',
    controller: 'AppCtrl'
  })

    .state('app.caseFileCtrl', {
      url: '/casefile',
      views: {
        'menuContent': {
          templateUrl: 'templates/files.html',
          controller: 'caseFileCtrl'
        }
      }
    })

  .state('app.single', {
    url: '/casefile/:fileId',
    views: {
      'menuContent': {
        templateUrl: 'templates/file.html',
        controller: 'fileDetailsCtrl'
      }
    }
  });
  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/app/casefile');
});

使用您 File servicejs/controllers.js

angular.module('starter.controllers', [])

.controller('caseFileCtrl', function($scope, File, $state) {
  $scope.files = [
    {num:"1",descript:"consumer",status:"closed",casedet:"cleared"},
    {num:"2",descript:"literal",status:"open", casedet:"process"},
    {num:"3",descript:"literal",status:"closed", casedet:"cleared"},
    {num:"4",descript:"consumer",status:"open",casedet:"proess"}
  ];

  File.set($scope.files);

  $scope.onSelectFile = function(n){
    console.log("Go to:", '/casefile/'+ n);
    $state.go("app.single", {fileId: n});
  };

})

.controller('fileDetailsCtrl', function($scope, $stateParams, $filter, File) {
    console.log("fileId:", $stateParams.fileId);
    $scope.file = $filter('filter')(File.get(), {num: $stateParams.fileId})[0];
});

你可以看到呆瓜一个可行的解决方案。

其他的一些要点︰

  • 避免使用 ng-repeat="file in file" 。我宁愿像︰ng-repeat="file in files"
  • 它是更好地将重定向到另一个路由使用 $state.go 和不 $location ;
  • 如果您正在使用 ng-click 指令上 a tag 和你使用它重定向到另一个 view ,它是更好,不包括 href="#filedetails" 属性以避免双重重定向;
  • a它是好的元素的列表,但也看一眼 ion-list
官方微信
官方QQ群
31647020