【问题标题】:master details controll not display content in new page主详细信息控件不在新页面中显示内容
【发布时间】:2015-12-05 05:01:08
【问题描述】:

我正在尝试通过单击按钮查看给定数据的详细信息来进行主详细信息导航

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>

控制器页面

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

  })

无法在其他页面查看 num 和 casedet

提前致谢

【问题讨论】:

    标签: android angularjs html ionic-framework ionic


    【解决方案1】:

    您可以使用服务在控制器之间共享数据。

    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'])
    

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

    js/controllers.js 中使用您的File 服务

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

    您可以在 plunker 上查看有效的解决方案。

    补充几点:

    • 避免使用ng-repeat="file in file"。我更喜欢这样的东西:ng-repeat="file in files"
    • 最好使用$state.go而不是$location重定向到另一条路线;
    • 如果您在a 标记上使用ng-click 指令并使用它重定向到另一个视图,最好不要包含href="#filedetails" 属性以避免双重重定向;
    • a 可以查看元素列表,但也可以查看 ion-list

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2019-04-23
      • 2014-09-26
      • 2019-08-23
      • 2020-01-20
      • 2018-06-02
      • 1970-01-01
      相关资源
      最近更新 更多