我正在通过点击按钮查看主要细节导航来查看给定数据的详细信息
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};
})
无法在其他页面中查看num和casedet
提前致谢
答案 0 :(得分: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');
});
在File
js/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];
});
您可以在plunker上看到有效的解决方案。
其他一些要点:
ng-repeat="file in file"
。我更喜欢这样的东西:ng-repeat="file in files"
$state.go
而不是$location
重定向到另一条路线; ng-click
标记上使用a
指令并使用它重定向到另一个视图,最好不要包含href="#filedetails"
属性以避免双重重定向; a
您可以查看元素列表,但也可以查看ion-list
。